由于处理上传的文件不安全,攻击者能够在我的服务器(CentOS 5.4)上运行php代码。这个问题已经得到解决,但是当他连接时,他似乎已经修改了一个由root拥有的文件(文件权限644 ),取而代之的是由apache用户拥有的。 有没有Apache或PHP漏洞可以启用这个?
为了响应请求更多信息的第一条评论 – 攻击者能够将file upload到我的服务器,并可能将用户发送到我的域中的恶意内容,这已经足够糟糕了。 但是,他/她也能够编辑文件。 这样做的结果是,我的网站被修改,把新用户注册的所有信息通过电子邮件发送到Gmail地址。
我不知道从哪里开始寻找,并正在请求帮助。 除了明显的目录权限(不允许file upload到php代码可能执行的目录;不要在用户的上传目录中执行php代码)我不知道要改变什么,以确保不会再发生。 这是我的理解,如果一个文件是由根拥有,没有其他用户可以改变它。 显然这不是事实。
如果是你的服务器,你会在哪里看?
这是我的理解,如果一个文件是由根拥有,没有其他用户可以改变它。 显然这不是事实。
如果这个文件的权限可以通过“group”或者“other”写入,那么与该组中的任何人(比如“apache”)或者任何用户(在“其他”的情况下)都可以覆盖和/或改变所有权。
另一件事我会寻找,因为这是一个文件注入,是不应该在那里的PHP文件,或者你没有创build的文件。 他们可以被命名为“index.php”或“help.php”等相对良性的东西,但是如果你看一下代码,你会看到大量的base64编码数据(以掩饰它实际正在做什么)。 也请看“wsh.php”。
有时这些文件是用PHP编写的“web shell”,它使用php / apache进程的权限,提供对文件系统的shell访问。 他们将能够编辑/删除/上传/复制/移动文件,其中包括已被root拥有但拥有不良权限的文件(请参阅第一段)。
这些文件可能如下所示:
<?PHP //Authentication $login = ""; //Login $pass = ""; //Pass $md5_pass = ""; //If no pass then hash eval(gzinflate(base64_decode('7b17f9vG0TD6d/v75TusEaYmE5KiZOcmWXJkSY59alt+JLlpXtmH // etc etc
也许你可以做这样的事情:
find www_root -name '*.php' -exec grep -l 'eval' {} \;
看看这些文件,并确保它们是合法的。
只是在将来如何避免这种情况的普遍提示:
修补您的服务器。 CentOS 5.4现在已经很久了。 我们目前在CentOS 5.7!
请注意,在CentOS 5.5中也有PHP的升级。
这个PHP升级包含了很多安全修复程序。
对于Web服务器,您应该使用(至less)三个用户和一个组:
root – 主进程的所有者(如果使用非特权端口则不需要)
wwwrun – 运行httpd-sub-processes的用户, 组www
wwwadmin – 具有对Web服务器文件的写入访问权的用户(通常是htdocs或者在你的情况下是php-base-dir),还有www 。
组www应该已经读取,但不能写访问htdocs。
随意select你自己的用户/组名,这只是一个例子。
您也可以通过禁止TRACE,TRACK,PUT和DELETE(如果您的应用程序允许)加固httpd。 这可以通过mod_rewrite来实现。