一、漏洞描述

Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。

二、漏洞环境

采用vulhub环境

根据提示环境位于

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_php


进入环境所在目录

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_上传_02

编译及运行漏洞环境:

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_php_03


Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_php_04

三、漏洞复现

访问目标网站

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_上传_05


发现页面是空白的需要自己添加前端的文件上传页面,代码如下,直接F12把代码黏贴到查看器的body里面

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="text" name="name">
<input type="submit" value="submit">
</form>

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_上传_06


上传一个称为1.php的文件,被拦截:

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_上传_07


在1.php后面插入一个\x0A(注意,不能是\x0D\x0A,只能是一个\x0A),不再拦截:

(1.php是上图所指的这个1.php)

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_php_08


Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_服务器_09


修改后上传成功

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_上传_10


访问刚才上传的/1.php%0a,发现能够成功解析,但这个文件不是php后缀,说明目标存在解析分辨率

Apache HTTPD 换行解析漏洞(CVE-2017-15715)——漏洞复现_服务器_11

四、修复建议

1.升级到最新版本
2. 或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录执行脚本权限