将字符串结尾的换行_Apache Httpd换行解析漏洞(CVE201715715)复现

7171ca009908f81e4bb4da7fc2f0d57f.gif

实验环境

攻击机:Windows 10

靶机:CentOS 7

项目地址:

https://github.com/vulhub/vulhub

749652092df6ba8f8a4710108143926f.png

基础环境搭建

    安装docker

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repoyum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpmyum install docker-cesystemctl start docker

    更换镜像源

vi /etc/docker/daemon.json

    修改文件内容,镜像源地址可以用阿里云的镜像地址,百度的镜像源会有一个包下载很慢。自己登陆阿里云获取

{        "registry-mirrors": ["https://xxxxx.mirrors.aliyun.com"]}

d459d7c2a451c3a9f19b6fc82e90d85c.png

保存退出之后,重新加载配置,重启docker

systemctl daemon-reloadsystemctl restart docker

摘取镜像

docker pull busybox

成功打印出"hello world"说明配置成功

docker run busybox echo “hello world”

到此docker配置完成

接下来部署实验环境

749652092df6ba8f8a4710108143926f.png

实验环境搭建

项目地址

https://github.com/vulhub/vulhub

下载后上传至任意目录,进入目录

vulhub-master/httpd/CVE-2017-15715

启动docker编译

docker-compose up -d
af5638bf908173f9cff1585566a92cfe.png

PS

很多人pip装不上,这里的方法亲测有效;

yum install -y python38wget https://bootstrap.pypa.io/get-pip.pysudo  python3 get-pip.pypip -versionpip install docker-compose

litbaiZhang

749652092df6ba8f8a4710108143926f.png

漏洞原理

在httpd2.4.0~2.4.29版本中有如下配置

    SetHandler application/x-httpd-php

这是httpd解析php文件的表达式,关键在于表达式结尾的$字符,这个字符在正则表达式中用于匹配字符串结尾的位置,同时也会匹配换行符号。

由于是黑名单匹配,所以我们的上传可以成功,并且在解析时会匹配换行符,我们访问时在php后加上%0a即可正常访问。

但是在使用中大部分情况下是$_FILES['file']['name']作为文件名,这样会自动过滤换行符,所以这个漏洞更多的是一个思路,实战中用到的并不多,这里复现漏洞,就采用了$_POST['name']来获取文件名。

749652092df6ba8f8a4710108143926f.png

复现步骤

一.准备phpinfo文件,内容为

<?php phpinfo();?>

命名为a.php
二.选择a.php文件上传

8bdb0a89b8a42c21e9393f7e6fe7bc66.png三.用burpsuit抓包

96523dbf46107c8ecbd12229e8b84d32.png四.在文件名a.phpHEX的后面加上0a,然后发包,即可绕过黑名单上传成功。  02e5200a39ba0913e75823656c7be913.png

查看一下文件已经上传成功了1a065a3417bcd6716aa8ec4d7a6af7d0.png

五.我们访问这个文件,在文件名后缀加上换行符%0a,验证是否存在解析漏洞。d9abba583ac90907c5746bbc8b878e5c.png可以看到已经解析了这个文件,漏洞复现成功。

漏洞修复

这个漏洞还是比较鸡肋的,只要使用了$_FILES['file']['name']来获取文件名,就会自动去掉换行符,也就过不了黑名单了,我们主要学习这里的思路。

749652092df6ba8f8a4710108143926f.png

aabb9c9a10a458f4243b26e6f56322fa.gif 16a709f382985f4dc95cb7d40284203d.png

Hi  这里是白泽Sec~

如果你想了解更多公众号的信息,

欢迎关注我哦~

既然在看了,就点一下吧!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值