我们的服务器遭到了攻击,我需要删除一个恶意代码,它被注入了很多的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。
**
**