如何从数百个文件中replace/删除HTML代码?

我们的服务器遭到了攻击,我需要删除一个恶意代码,它被注入了很多的PHP和HTML文件。

什么是从多个文件中replace代码的好方法? 我试过使用这个脚本: https : //github.com/terry81/Malicious-Web-Scripts-Search/commit/2cdb95adfb667455080468ccaa3e58c822c2bd32但我不能让它的工作。 请帮忙!

你链接的脚本看起来很简单。 你可以通过下面的一行来做这样的事情:

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 。 可以select使其可执行( chmod +x file.pl ),否则你必须明确地用perl调用它:

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

您可以执行“查找”部分以及Perl代码,但不需要。

没有保证! 首先在几个文件上testing它!

Sed,Perl等都可以做你想做的。 然而…

不会假设有人能够将恶意代码注入许多脚本,并且没有完全拥有该框。 当然,你会摆脱HTML中的恶意代码,但是从你的盒子里运行的僵尸networking呢?

标准的程序是把这个盒子从networking上拉出来,然后再把它插回去。至less,如果你一直保持与你的备份的校验和,运行整个文件系统的校验和。

从最后一次已知的良好备份中恢复可能是最安全的 – 但是,只有在您可以确定归档日志等初始妥协的date和时间时才是最安全的。

有很多方法可以在多个文件中查找和replace文本。 Sed是最喜欢的,但它是否是正确的工具取决于你的文件是什么样的。 你能给我们一个在上下文中的恶意代码的例子吗?

Ultra Edit是更好的编辑工具之一。 你可以谷歌和下载试用版试用。 如果您的服务器存在备份,那么我build议使用Beyond Compare来分析和恢复文件。 请注意,我提到的这些工具不是免费软件。

你可以很容易地修复(或完全破坏)很多文件:

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

当然,现在你需要一个正则expression式来匹配错误的代码,所以你有两个问题。

它将使用.prev结尾复制每个文件,然后按照原始文件中所示进行replace。

**

  • 首先testing你的REGEX!

**