复现CVE2017-15715漏洞(Apache HTTPD 换行解析漏洞)

前言——首先我这是在前辈的经验上自己动手做了这次实验,全都仰仗前辈的经验总结。

漏洞简介:

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

复现:

我是在kali环境下,预先已经装好了docker。

不知怎么下载docker的和安装的可以去vulhub上自行解决:漏洞搭建环境指导

下载漏洞集成环境vulhub:

git clone https://github.com/vulhub/vulhub.git

启动docker:

systemctl start docker

  1. 在物理机上创建目录
  2. mkdir -p /var/www/html、
  3. 然后创建个容器,并关联物理机的/var/www/html目录
  4. docker run -d -v /var/www/html:/var/www/html -p 8080:80 --name apache php:5.5-apache
  5. 再把物理机的/var/www/html开放写权限
  6. chmod 777 /var/www/html/

在html目录下编辑一个php文件,内容如下:

      该代码为模拟一个存在解析漏洞的环境

<?php
 if(isset($_FILES['file'])) 
{    
 $name = basename($_POST['name']); 
 $ext = pathinfo($name,PATHINFO_EXTENSION);  
 if(in_array($ext, ['php', 'php3', 'php4', 'php5', 'phtml', 'pht']))
 {        
 exit('bad file');     
}   
  move_uploaded_file($_FILES['file']['tmp_name'], './' . $name);
 }

对这个代码进行分析的话,发现这里获取文件名是需要单独post一个name的,如果通过下面这样的方式就会把\0xa自动去除,也就不会造造成这个漏洞

$_FILES['file']['name']

接着创建一个index.html文件:

      内容如下:

<form action="/你的PHP文件名.php" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="text" name="name">
    <input type="submit" value="submit">
</form>

这是创建了一个上传表单

我们创建一个php文件,内容如下:

<?php
phpinfo();
?>

直接将其上传会显示上传失败

将其上传后抓包,在Hex选项卡中name=你的php文件名.php后面0d的位置右键-Insert byte,添加一个0a,然后发包,成功上传

浏览器访问:ip:8080/x.php%0A成功解析

回车的(0D)是不行的,虽然能上传成功,但是无法解析

优秀复现文章:

CVE-2017-15715漏洞复现

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值