无限制文件上传测试
p0nxp posted by:什么是无线无限制文件上传?
存在漏洞的上传功能允许攻击者绕过输入控制,上传payload并可以潜在地执行命令
没有正确控制或验证过滤用户上传的文件的web应用,将有可能造成无 限制文件上传漏洞. 本文档概述了在执行Web应用程序渗透测试时文件上传功能的测试过程。这篇文章包含绕过文件上传黑名单过滤的各种技术,并总结了一个有用的检查列表
识别文件上传功能
文件上传功能可以说是既容易识别也容易利用. 典型的地方是在个人资料的头像上传,文档上传功能和文件导入功能处. 在Burp中, 它也会被动的识别文件上传点
使用Burp Intruder测试无限制文件上传
Web应用经常使用黑名单列表来验证和过滤输入的文件,可以说是正常但也是不足的. 如果一个文件的拓展名不在黑名单列表内,那攻击者就可以绕过这个过滤. 所以输入验证的首选机制是输入白名单, 它使用 “拒绝其他全部” 的方法, 只允许需要的输入.
Burp测试文件上传拓展
- 手动上传一个可能会导致上传失败的文件, 找到可用于标识Web应用程序拒绝文件扩展名的响应。
- 发送这个上传请求到 Burp intruder
- 清除默认的变量标记点
- 选择文件拓展名为变量标记点
- 选择包含各个拓展名的payload,如php,jpg,gif等等
- 在选项配置中使用 grep-match 来匹配步骤1中用于表示失败响应的字符串
- 点击Start attack. 在结果窗口中匹配结果未打勾的都可能是漏洞点,需要进一步检查并确认任何发现
关键点:
1. 使用Burp Intruder测试所有扩展名,并使用Grep功能对结果进行排序
2. 使用可能绕过黑名单列表的非常见文件扩展名,例如: .php3, .php5, .phtml
测试文件上传的Content-Type
识别目标可接受的文件上传 Content-Type
- 建立一个基线 – 使用一个已知可接受的 Content-Type并查看应用的响应内容, 同样的使用一个可能失败的Content-Type并查看响应的内容,这个主要用于步骤 6 中
- 发送上传请求到 Burp intruder
- 清除默认的变量标记点
- 选择 “Content-Type:” 头为变量标记点
- 选择一个包含Content-Type的payload列表
- 在选择配置选项中使用 grep-match来匹配步骤1中用于表示失败响应的字符串
- 点击Start attck. 在结果窗口中匹配结果未打勾的都可能是漏洞点,需要进一步检查并确认任何发现
关键点:
1. 使用Burp Intruder测试所有Content-Type,并使用Grep功能对结果进行排序
2. 尝试改变Content-Type为一个可接受,且web服务或应用会处理的拓展名 (这里没理解什么意思)
3. 尝试可能绕过黑名单列表的非常见Content-Type
文件名和拓展名的Fuzzing
在输入验证时还应该测试文件名和拓展名,如果文件名是一个XSS, SQLI, LDAP或者命令注入payload时会发生什么?
- 手动上传一个可能会被上传应用验证过滤的失败文件,找到一个可以用于识别Web应用程序拒绝的文件拓展名的响应标识
- 发送上传请求到Burp Intruder
- 清楚默认的变量标记点
- 选择文件名或者拓展名为变量标记点
- 选择一个包含各种注入的payload [如:js,XSS,CMD,LDAP,Xpath,SQL等等]
- 在选择配置选项中使用 grep-match来匹配步骤1中用于表示失败响应的字符串
- 点击Start attack, 在结果窗口中匹配结果未打勾的都可能是漏洞点
- 验证确认发现的可能漏洞
文件上传黑名单绕过技术
Windows IIS Server黑名单文件上传绕过:
- 上传以黑名单列表中的拓展名后加分号的文件名,例如: shell.asp;.jpg
- 创建一个.asp拓展的目录,然后在该目录下上传一个允许上传的文件名,例如: folder.asp\file.txt