CVE-2017-15715 复现
程序员文章站
2022-07-15 15:47:25
...
0x00 前言
漏洞这种东西还是复现一遍才行
影响版本
2.4.0~2.4.29
0x01 复现过程
1.环境配置
参考https://github.com/vulhub/vulhub/tree/master/httpd/CVE-2017-15715
按照vulhub操作
docker-compose build
docker-compose up -d
这样操作之后访问http://your-ip:8080,环境就已经搭建好了。
但是你需要自己构造上传的数据包非常不友好,所以自己提供了html页面可以方便练习。
<!DOCTYPE html>
<html>
<head>
<title>By wdd</title>
</head>
<?php
if(isset($_FILES['file']) && $_POST['name']!="") {
$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'],"/var/www/html/".$name);
echo "success";
}else{
echo "Please check file name!";
}?>
<body>
<form enctype="multipart/form-data" method="post">
<p>CVE-2017-15715<p>
<p>File name:<input type="text" name="name"></p>
<input class="input_file" type="file" name="file"/><br>
<input class="button" type="submit" name="submit" value="uploda"/>
</form>
</body>
</html>
效果如下图:
打开docker,首先用docker ps获取一下当前运行的docker image
然后用如下命令进入docker的命令行
docker exec -it a16a6b4ea869 /bin/bash
本地开启一个python 的http
py2 -m SimpleHTTPServer
docker下到/var/www/html/下用curl进行写入
curl http://127.0.0.1:8000/x.php
2.过程演示
上传一个文件
然后修改hex
发包之后,访问1.php%0a
0x02 原理
Apache通过FilesMatch的方式来检查后缀以此来判断是否是php,然后进行解析。
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
这里看一下$
,$
的意思就是说如果末尾是一个\n我也是要匹配一下的
ps
这里使用 $_FILES[‘file’][‘name’] 获取用户名会自动去掉\n
推荐阅读
-
Joomla SQL注入漏洞(CVE-2018-8045)复现
-
Tensorflow复现DenseNet cifar-10(正确率91%)
-
Windows CVE-2019-0708 远程桌面代码执行漏洞复现
-
2020KDD-CUP阿里天池一篇baseline复现debiasingRush(一)
-
币币世界打破数字货币壁垒,复现全民增值时代
-
网络安全渗透测试反序列化漏洞分析与复现工作
-
Tensorflow复现DenseNet cifar-10(正确率91%)
-
网络安全渗透测试反序列化漏洞分析与复现工作
-
SpringBoot SpEL表达式注入漏洞-分析与复现
-
「漏洞预警」Apache Flink 任意 Jar 包上传导致远程代码执行漏洞复现