我的 CMS 充斥着垃圾邮件脚本,几乎每个文件夹中都有。我发现,可以使用此 find/grep 命令找到这些脚本:
sudo find . -type f \( -name '*.php' -or -name '*.node' \) -exec grep -i "eval(base64_decode" {} +
嗯,有些文件只包含垃圾脚本,它们的大小在 300 - 302 字节之间。
但是 CMS 使用的一些其他文件也受到了感染。它们不应该被完全删除,只需删除从第一个字符到第一个 php 结尾(“?>”)的所有内容即可。
首先我使用“删除”命令并写下:
sudo find . -type f \( -name '*.php' -or -name '*.node' \) -exec grep -i "eval(base64_decode" {} + -delete
但这是一个很大的错误,因为我删除了所有重要的文件。在我删除更多文件之前,我只想问一下该怎么办?
类似于:获取上述代码找到的每个文件并检查其大小是否在 300 - 302 字节之间,如果是 -> 删除它。如果不是 -> 删除第一个 PHP 部分。但很重要!!!不要删除其余部分!文件如下:
<?php ?> ... <?php ?> ... <?php ?>"
只有第一个 PHP 块被感染。
你能帮帮我吗?有数百个文件,我不想自己做。
提前谢谢您!
答案1
您可以尝试以下命令,它将对每个与模式匹配的文件调用 perl 查找/替换命令"eval(base64_decode"
:
sudo find . -type f \( -name '*.php' -or -name '*.node' \) -exec grep -li "eval(base64_decode" {} \; 2>/dev/null | xargs perl -i -p0e 's/<\?php.*?\?>//s'
该部分将仅删除命令返回的文件中的perl
第一个块。<?php ?>
find