如何替换/删除数百个文件中的 HTML 代码?

如何替换/删除数百个文件中的 HTML 代码?

我们的服务器受到了攻击,我需要删除注入到大量 php 和 html 文件中的恶意代码。

有什么好方法可以替换多个文件中的代码?我尝试使用这个脚本:https://github.com/terry81/Malicious-Web-Scripts-Search/commit/2cdb95adfb667455080468ccaa3e58c822c2bd32但我无法让它工作。请帮忙!

答案1

您链接的脚本看起来很简单。您可以通过以下一行代码执行类似操作:

find $DIRS -print0 | xargs -0 perl -p -i.bak -e 's/\Qcode to be removed\E//'

这里$DIRS代表文件所在的目录,code to be removed代表恶意代码。将\Q引用所有特殊字符,直到\E。原始文件将备份到.bak文件中。如果您不想要这个,请删除.bak,即仅删除-i,但不要将其与组合-e,即-i -e不组合-ie

小心,如果你操作错误,你可能会删除重要的东西!请先自行备份!

更新:

脚本版本:

#!/usr/bin/env perl -i.bak
use strict;
use warnings;

my $code = <<'END-OF-MALICIOUS-CODE';
xo=new Date(2010,11,3,2,21,4);t=xo.getSeconds();var huur=[36/t,36/t, ....
END-OF-MALICIOUS-CODE
chomp $code; # remove trailing newline

while (<>) {
    s/\Q$code\E//;
    print;
}

但将其放入文件中,最好带有.pl扩展名,例如remcode.pl。可以选择使其可执行(chmod +x file.pl),否则您必须perl明确调用它:

find $DIRS -print0 | xargs -0 perl remcode.pl

您可以执行“查找”部分以及 perl 代码,但这不是必需的。

不保证!先在几个文件上测试一下!

答案2

Sed、Perl 等都可以满足您的需要。但是...

我会不是假设有人能够将恶意代码注入大量脚本,但并未完全控制该机器。当然,你可以清除 HTML 中的恶意代码,但从你的机器运行的僵尸网络怎么办?

标准程序是将盒子从网络上拔出,并在重新插入之前进行全面的事后检查。至少,如果您一直保留备份的校验和,请运行整个文件系统的校验和。

最安全的方法可能是从您上次已知的良好备份中进行恢复 - 但前提是您可以从存档日志等中确定初始泄露的日期和时间。

答案3

有很多方法可以在多个文件中查找和替换文本。 塞德是最受欢迎的工具,但它是否合适很大程度上取决于你的文件是什么样子。你能给我们举一个恶意代码的例子吗?

答案4

你可以用这个轻松修复(或彻底破坏)大量文件:

sudo perl -pi.prev -e 's/bad string/new string/g' /path/to/folder/of/bad/files

当然,现在您需要一个正则表达式来匹配错误代码,因此您有两个问题。

它将复制每个以 .prev 结尾的文件,然后按照原始文件所示进行替换。

**

  • 请首先仔细测试你的正则表达式!!!

**

相关内容