我最近在我的一个目录中找到了以下代码,在一个名为的文件中doc.php
.该文件功能或链接到文件管理器.它做得很好.基本上,它列出了当前目录中的所有文件,并允许您更改目录.
它可以访问我的所有文件(添加,重命名,信息,删除...).我不记得安装了它.我删除了它,删除了一些简单调用的可疑和大文件core
并重置了我的所有密码.
谷歌搜索一些代码片段会导致很多结果,其中大部分都没有很多信息... 但是,这里有一个更具信息性的结果.
但是,我不确定我是否理解这件事是如何运作的.我有几个问题:
有什么可能的方法可以在我的网站/目录上获得?
如何追溯preg_replace的结果?
编辑:
这是未经模糊处理的PHP代码:http://pastie.org/1058996
这不完全是一个正则表达式.正则表达式/.*/
,基本上意味着"匹配一切"./e
然而,修饰符eval()
是下一个参数中的代码.事实上,这是某人隐藏代码的一种方式.以下证明这是一个后门,您必须立即将其删除.您的系统可能会进一步受损.
这是后门在访问时的样子:
代码的十六进制部分:
\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28
是真的:
eval(gzinflate(base64_decode(
这是代码将打印出这个后门的源代码.但是我不会执行生成的PHP代码,除非它在一次性虚拟机上.
如何锁定您的服务器:
There are a number of ways this could have gotten on your site. Most likely you have been hacked using Exploit Code because one of your web applications is out of date. Try updating everything, including libraries. Change passwords for everything, especially FTP, although should be using sftp or ftps.
If you control your MySQL server make sure your web application's MySQL user account is not root
, and make sure you remove MySQL FILE
privileges from the account. You should also go a step further and do a chmod 500 -R /path/to/web/root
and do a chown www-data -R /path/to/web/root
www-data is a common user for apache, but it might be differnt for your system try running to figure out the user account.
接下来运行phpsecinfo.修改你的php.ini或.htaccess并删除所有RED,并尝试删除尽可能多的黄色.
的e
模式修改装置被替换的代码应作为PHP代码来执行.\x??
作为字符串开头的系列是十六进制字符,用于隐藏它们对应的ASCII; \x65\x76\x61\x6C
相当于只是打字eval
,但是eval
在脚本中看到的人会立即意识到某些东西已经出现了.完整的替换字符串转换为:
eval(gzinflate(base64_decode("...")));
我遗漏了...
内容,但这是恶意软件作者正在执行的完整代码.您只需执行该gzinflate(base64_decode("..."))
部件即可查看代码; 它超过1000行,可能不值得发布