上传参数名解析:明确哪些东西能更改
content-disposition:一般可更改
name:表单参数值,不能更改
filename:文件名,可以更改
content-type:文件MIME,视情况更改
-------
文件上传 WAF一般检测:
一:filename(阻止php等其他后门脚本后缀名)
绕过方法:
①数据溢出——防匹配(通过在name前加入足够多的垃圾数据,来使检测崩溃,从而上传。)
②符号变异——可以删除filename后面的单双引号或者前后的单双引号都删除。或者"x".php也可以绕过
③数据截断——将filename改为x.jpg;.php可以绕过(安全狗匹配的是;前面的jpg,不会匹配到后面的php);
将php进行换行,也可以绕过安全狗。
④重复数据——将filename重复几个,最后一个写php代码,可以绕过,或者将前面的信息复制到filename里面,在后面再加上x.php
fuzz模糊测试{可下载fuzz字典,利用bp进行爆破}
------
文件上传安全修复方案:
后端验证——采用服务端验证模式
后缀检测——基于黑白名单过滤
MIME检测——基础上传自带类型检测
内容检测——文件头,完整性检测
自带函数过滤
自定义函数过滤:function check_file(){}
WAF防护产品:宝塔,云盾等