CVE-2017-15715漏洞复现

复现环境

docke

apache 2.4.0到2.4.29即可

php5.5

 

复现过程

先在物理机上创建目录

mkdir -p /var/www/html

然后创建个容器,并关联物理机的/var/www/html目录

docker run -d -v /var/www/html:/var/www/html -p 8080:80 --name apache php:5.5-apache

再把物理机的/var/www/html开放写权限

chmod 777 /var/www/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); }

这里过滤了php,php3,php4,php5,phtml,pht

访问下抓包

然后更改请求方式和内容类型

 

上传一个1.php文件,会被拦截

上传个2.txt,上传正常

在上传个3.php并在文件名后面添加0a

上传成功

 

 

访问xxx/3.php%0a发现解析成功

 

后记

1. 默认的Apache配置文件即可利用,因为Apache配置使用了<FileMatch>:

<FilesMatch \.php$>    

SetHandler application/x-httpd-php

</FilesMatch>

后来测试发现回车的(0D)是不行的,虽然能上传成功,但是无法解析

火狐

谷歌

2. 获取文件名时不能用$_FILES['file']['name'],因为他会自动把换行去掉,这一点有点鸡肋

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值