现在的位置: 首页 > 综合 > 正文

浅析Apache服务器扩展名解析漏洞

2012年11月16日 ⁄ 综合 ⁄ 共 1157字 ⁄ 字号 评论关闭
作者:泡泡鱼
转载请著名出处,谢谢!

提到Apache,经常接触网络的朋友一定都知道吧。它是一款使用率不亚于IIS的HTTP服务器程序。用于提供我们的HTTP访问。目前最新版本是Apache2.2.6。我们可以到http://httpd.apache.org去进行下载。它可以工作于linux平台或者是windows平台。以下的测试我们以windows平台中windows2003server为例。/
首先我们将下载好的最新Apache安全程序(我这里是安装版的,大家也可以下载解压版的)安装于服务器中并成功启动服务提供HTTP服务。接下来我们再将下载好的PHP安装程序(同样分安装版和解压版)进行安装,一切完毕之后,我们上传一个PHP的后门文件进行访问,得到如下图所示:

uploads/200801/08_220650_1.gif

可以成功解析。下面我们就来更改下这个PHP文件的扩展名。构造一个类似于*.php.*的文件。至于最后面的那个星号,我们可以随便自定义,甚至是没有的扩展名也可以。比方这里我就定义成index.php.111,如下图所示:

uploads/200801/08_220721_2.jpg

然后我们回到浏览器中进行浏览这个文件http://192.168.203.133/index.php.111。看到了什么?对!同样成功访问了我们的phpshell!

uploads/200801/08_220801_3.jpg

这说明不管最后后缀为什么,只要是.php.*结尾,就会被Apache服务器解析成php文件!。我们再来尝试访问jpg图片格式文件,却显示了webshell的源文件,如下图所示:

uploads/200801/08_220845_4.jpg

原因就处在了Apache的配置文件mime.types中。这个文件存在于apache的配置文件夹,我的是“Apache Group\Apache2\conf”文件夹中。我们用记事本打开mime.types文件。可以看到在左侧的“MIMI type”中定义了一些文件的打开方式,而再右边“Extensions”中则定义了一些常见文件的扩展后缀名。查找关键字“jpg”可以看到下面有这么一行:image/jpeg jpeg jpg jpe 。如下图所示:

uploads/200801/08_220920_5.jpg

原来jpg扩展名已经被定义了。所以也就没有被直接解析成php脚本文件了。那我们就找那些在这里未经过定义的扩展名,同时在网站程序中我们可以找所有允许的上传类型。通过对默认配置的尝试,我发现rar文件同样未被定义!那我们就将webshell更名为“shell.php.rar”文件,然后再在浏览器里面进行访问。哈哈!果然成功返回了我们的phpshell!相信在国内的程序中,没有几个上传是不允许rar类型的吧?就这样我们可以利用Apache的漏洞进行上传得到一个php的shell了。
以上测试环境是在Windows下。对于Linux中,问题同样。再这里就不进行测试了。至于是否是Apache所有版本,也没有时间进行全部测试。大家可以在以后的实践中进行总结。

抱歉!评论已关闭.