1 WAF介绍
WAF(Web应用防火墙)是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。
2 WAF拦截的步骤
(1)获取Request Header里的Content-Type值中获取boundary值。
(2)根据第一步的boundary值,解析POST数据,获取文件名。
(3)判断文件名是否在拦截黑名单内/白名单。
3 WAF绕过方式
(1)顺序互换进行绕过
a. 因为WAF可能匹配name在前filename在后,会导致绕过。
b. Content-Disposition和Content-Type进行互换,也会导致绕过。
(2)字符转换
a. 引号变换
头部字段的值既可以添加单引号也可以添加双引号还可以不加引号,都不会影响上传结果。可以去除掉filename字符串中末尾的引号,也能够正常上传。
b. 大小写变换
对Content-Disposition、name和filename这三个固定的字符串进行大小写转换。
c. 添加换行符
字段值与等号之间可以加入换行符,依然可以正常上传。
d. 分号绕过
文件解析时,可能因为分号解析不到文件名,导致绕过。
e. 多个等号
在POST的内容中使用多个等号对文件上传也没有影响。
(3)数据重复和截断
a. filename重复
最终上传成功的文件名是shell.php。但是由于解析文件名时,会解析到第一个。正则默认都会匹配到第一个。
b. 分号截断
若WAF匹配文件名到分号截止,则可以绕过。
c. 引号截断
php<5.3 单双引号截断特性。
d. 00截断
在url中%00表示ascll码中的0 ,而ascii中0作为特殊字符保留,所以当url中出现%00时就会认为读取已结束。
中泊研安全技术团队通过“人+流程+数据+平台”,构建可持续安全监测和响应能力,为客户提供全方位的安全运营服务解决方案。
原文始发于微信公众号(中泊研安全应急响应中心):上传漏洞之WAF绕过
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论