Apache HTTPD 换行解析漏洞(CVE-2017-15715)

应用条件:Apache 2.4.0~2.4.29

直接上传 test.php 文件会被拦截

直接上传

利用换行解析漏洞,在 test.php 文件后插入一个 \x0A 即可绕过。【1】

使用 Request 中的 Hex 栏可以轻松编辑文件的hex格式。

Burp 中只能修改 hex 字符而不能添加,因此可以随便输入一个字符(如空格),然后再对它进行修改。

Hex修改

上传成功后访问上传文件,已经成功解析:

成功解析

Apache HTTPD 多后缀解析漏洞

应用条件:配置文件( php.ini )中存在 AddHandler application/x-httpd-php .php

首先需要解释 Apache 为什么需要多后缀特性?以下是一个应用场景:

如果在配置文件中有以下设置:

1
2
AddType text/html .html ;给 .html 后缀增加了 media-type ,值为 text/html
AddLanguage zh-CN .cn ;给 .cn 后缀增加了语言,值为 zh-CN

那么访问文件 index.cn.html ,将返回一个中文的 html 页面。

根据上述原理,可以构造一个多后缀的 php 文件(比如: test.php.jpg ),从而绕过白名单限制:

上传成功

访问上传的文件,能够成功解析:

成功解析

Nginx 解析漏洞

应用场景:

  1. 配置文件 php.inicgi.fix_pathinfo=1
  2. 未配置 security.limit_extensions= .php ;

可以直接请求 nginx.png 文件,发现图片能正常打开。然后再请求 nginx.png/x.php 文件,这样 nginx 就将图片作为 php 脚本解析;

Nginx解析漏洞

自己上传图片文件,抓包在POST包后添加脚本(如 <?php phpinfo();?> ),再请求对应图片的地址 xxx.png/x.php 即可。

Nginx解析漏洞
Nginx解析漏洞

注释

[1] : 正常的回车符是 \x0D\X0A ,此处只能插入 \x0A