我的广告服务器在周末被黑了。
根据this article的说法,这似乎是一个普遍存在的问题。
里面有些东西让我思考..。
他说,
攻击者利用一次攻击获得了他的服务器的登录权限,然后上传了一个恶意编码的图像,其中包含一个隐藏在其中的PHP脚本。通过查看图像,攻击者强制脚本在服务器上执行
这怎麽可能?它依赖于用GD或类似的方式打开的图像吗?他们会上传一个伪装成图片的脚本,并以某种方式将其包含进来吗?
发布于 2010-08-30 08:18:44
它可以像上传一个文件一样简单,比如
GIF89a<?php
echo 'hi';
如果您的上传脚本通过fileinfo或mime_content_type()
测试内容类型,它将被识别为"GIF image data,version89a“,因为GIF89a
是将文件标识为gif所需的唯一模式/幻数。
OpenX上传脚本显然保留了建议的文件名,即可以将此“图像”保存为服务器上的foo.php。现在,如果您通过http://hostname/uploaddir/foo.php
请求该文件,则该脚本将作为php脚本执行,因为was服务器通常/通常仅通过文件扩展名来确定内容类型
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
然后,php回显前导GIF89a
并执行<?php ...code...
块。
将
发布于 2010-08-30 08:09:43
您的服务器正在解析该文件,原因如下。攻击者将PHP放入图像注释中。
您如何验证该文件是否为镜像?如果你只在mime类型上这样做,那么我相信他们可以伪造图像标题并在之后包含任何他们想要的内容。VolkerK has a practical example
在完美的世界里,我不会通过PHP处理任何面向公众的图片,因为我担心会出现这样的问题。
使用服务器直接提供图像;一个好的建议是将这些图像保存到一个目录中,在那里它们可以在没有的情况下被提供。
我想这就是它的要点,如果我错了,谁来纠正我。
发布于 2010-08-30 08:05:49
我认为服务器受损的唯一可能性是镜像是include
d,而不是通过readfile
和其他流函数读取。
https://stackoverflow.com/questions/3597082
复制相似问题