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

漏洞描述

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

漏洞原理

此漏洞的出现是由于apache在修复第一个后缀名解析漏洞时,用正则来匹配后缀。在解析php时xxx.php\x0A将被按照php后缀进行解析,导致绕过一些服务器的安全策略

漏洞复现

环境搭建

访问页面:
http://10.9.75.198:8080/

Apache HTTPD 换行解析漏洞(CVE-2017-15715)_第1张图片

漏洞复现

在桌面创建1.php文件,写入一句话木马,将1.php上传,用bp进行抓包

在这里插入图片描述

上传失败

Apache HTTPD 换行解析漏洞(CVE-2017-15715)_第2张图片

查看源代码,发现后端设置了黑名单拦截





        Upload


查看抓包,漏洞利用,修改在07和0d之间输入0a

Apache HTTPD 换行解析漏洞(CVE-2017-15715)_第3张图片

在这里插入图片描述

再次发送包,将1.php修改为1.php%0a

Apache HTTPD 换行解析漏洞(CVE-2017-15715)_第4张图片

漏洞分析

漏洞的成因就是apache中的配置文件中

查看容器列表
sudo docker ps -a
在容器中执行命令
sudo docker exec -it <容器> 命令  /bin/bash
cd到目录下
cd /etc/apache2/conf-available/
查看文件
cat docker-php.conf

Apache HTTPD 换行解析漏洞(CVE-2017-15715)_第5张图片


        SetHandler application/x-httpd-php


DirectoryIndex disabled
DirectoryIndex index.php index.html


        Options -Indexes
        AllowOverride All

\ .php$ 中的$ 表示配置匹配后缀名文件的防盗链,而这个解析漏洞根本原因就是$ 这个符号,这个符号在正则表达式中是匹配字符串中结尾的位置,也就是说可以利用换行符使$ 与其匹配从而绕过黑名单机制实现文件上传,验证逻辑又是先会对上传的文件正则匹配验证后缀名是否包含了php,因为解析漏洞的存在,这里不会过滤php%0a,后续的黑名单机制也就如同摆设了

漏洞修复

1、使用SetHandler,写好正则

2、禁止.php这样的文件执行

3、升级版本

你可能感兴趣的:(漏洞复现,安全)