Apache最新解析漏洞:CVE-2017-15715复现

原理

Apache官网给出的漏洞信息

翻译过来

参考链接:http://httpd.apache.org/security/vulnerabilities_24.html

什么是?

在apache配置文件中用来做访问控制之用,比如可配置某目录下,禁止访问PHP文件。

如何利用??

在默认配置下, “上传”一个带“换号符”的php文件上去,使用http://ip/test.php%0a访问,可直接解析PHP内容。

如下图,已上传一个“6.php换行符”文件。(上传过程后文有记载,在linux可使用如下方法发现文件名后面有换行符:“cat 文件名前部分+Tab键”,如cat 6.p+Tab键)

浏览器访问:http://192.168.131.136/upload/upload-labs/master/upload//6.php%0a(访问链接最后加%0a)

不加%0a会显示无此文件

Apache情况说明

默认情况下,apache2.4.x使用了(在/etc/httpd/conf.d/php.conf文件),故可利用。该配置代表解析php。

利用

环境:centos7+httpd2.4.6+php5.6

情况一:在代码层采用黑名单策略防止上传

代码如下:

上传PHP文件

直接无法上传

对上传包进行以下修改:在1.php后添加\x0a,成功上传

访问该图片链接并在后面加%0a,成功解析。(也可是是一个shell)

情况二:在apache配置文件中进行如下配置:上传目录php目录禁止访问。(但以$做正则匹配)

此方法无法直接利用解析漏洞!!!

httpd.conf文件做如下配置

发现无法解析

证明”$”符号起到了限制效果。

情况三:在apache配置文件中进行如下配置:上传目录不做PHP文件的解析。(但以$做正则匹配)

此方法无法直接利用解析漏洞!!!

httpd.conf文件做如下配置

可绕过限制访问其中的php文件(“1.php换行符”是包含的图片马)

发现可绕过是否是PHP文件的检测,但不对其代码进行解析。

利用条件

文件上传采取黑名单策略(或直接任意文件上传);

获取文件名时不能用“去掉换行”的函数,比如$_FILES['file']['name'];

在上传目录下,文件有执行权限和解析权限

Apache在配置文件中采用了“$”做PHP解析的正则匹配(其他情况不行),如下图。

影响版本

Apache 2.4.29-2.4.25, 2.4.23, 2.4.20

Apache 2.4.18-2.4.16, 2.4.12, 2.4.10

Apache 2.4.9, 2.4.7, 2.4.6, 2.4.4-2.4.1

所有版本均存在,只不过默认情况下,apache2.4.x版本有如下配置(其他版本亲测有效)

欢迎各位大佬批评指正!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181102G0SQCF00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券