我的网络服务器被黑客入侵(尽管安全团队告诉我没有任何东西被入侵),而无数的文件有额外的PHP代码生成链接到一些越南网站。通过SSH查找并删除?
鉴于我的服务器上有数以万计的文件,有没有办法让我用SSH进去,并从其中找到的每个文件中删除那行代码?
请在您的回答中具体说明,我只使用了SSH几次来完成一些非常基本的任务,并且不想最终删除一堆我的文件!
我的网络服务器被黑客入侵(尽管安全团队告诉我没有任何东西被入侵),而无数的文件有额外的PHP代码生成链接到一些越南网站。通过SSH查找并删除?
鉴于我的服务器上有数以万计的文件,有没有办法让我用SSH进去,并从其中找到的每个文件中删除那行代码?
请在您的回答中具体说明,我只使用了SSH几次来完成一些非常基本的任务,并且不想最终删除一堆我的文件!
是的,几行shell脚本就可以做到。尽管如此,我犹豫要把它交给你,就好像出了问题一样,我会因为搞乱你的Web服务器而受到指责。这就是说,该解决方案可以如此简单:
for i in `find /where/ever -name '*.php'`; do
mv $i $i.bak
grep -v "http://vietnamese.web.site" $i.bak >> $i
done
此发现/where/ever
下的所有文件*php
,并删除在他们http://vietnamese.web.site
任何行。它使每个文件的*.bak
副本。你跑这一点,一切似乎好后,你可以用
find . -name '*.php.bak' -exec rm \{\} \;
下一个任务删除的备份将是寻找新的供应商,因为他们不仅遭到黑客入侵,但他们显然不保留备份。祝你好运。
首先创建一个正则表达式,即坏的代码(只有不好的代码)相匹配,然后运行
find /path/to/webroot -name \*.php -exec echo sed -i -e 's/your-regex-here//' {} \;
如果一切看起来正常,去掉echo
正则表达式不仅仅是文件中的PHP代码吗? – Kray 2012-02-16 15:21:56
我做下面的方式。例如。删除与特定名称或扩展名匹配的文件。
rm -rf * cron.php。 *
室射频* match_string *
其中match_string将是任意的字符串。确保*和字符串名称之间不会有空格。
rm -f cron.php.*
删除所有文件,该文件夹名为cron.php英寸[whereveryouwant]
欧内斯特, 但是也有一些影响,如果我只是用*它会检查每个文件的PHP和HTML文件? 当然,实际的代码是一块PHP,因此它在解析之前不是真正的链接。我可以把代替URL? 我会问我的主人是否可以为我做这件事,以确保它正确完成。如果不是,我会放弃它,我不会尝试手动完成。 – Kray 2012-02-16 15:16:59
所有这些命令都非常灵活。如果你想'find'找到所有'* .htm'和所有'* .php'文件,那么你可以使用'find/where/ever -name'* .php'或-name' * .htm''。网址只是一个例子,可以使用任何唯一的字符串来识别您需要删除的行。 – 2012-02-16 15:21:32