Proxy / WAF Protections Bypass
最后更新于
最后更新于
来自此研究的技术。
Nginx 规则示例:
为了防止绕过,Nginx在检查之前执行路径规范化。然而,如果后端服务器执行不同的规范化(删除Nginx不删除的字符),可能会绕过此防御。
Nginx FPM配置:
Nginx 被配置为阻止访问 /admin.php
,但可以通过访问 /admin.php/index.php
来绕过此限制。
在这篇文章中解释了 ModSecurity v3(直到3.0.12版本)**不正确地实现了REQUEST_FILENAME
**变量,该变量应该包含访问的路径(直到参数的开始)。这是因为它执行了URL解码以获取路径。
因此,在 mod 安全中,像http://example.com/foo%3f';alert(1);foo=
这样的请求将假定路径只是/foo
,因为%3f
被转换为?
结束了URL路径,但实际上服务器收到的路径将是/foo%3f';alert(1);foo=
。
变量REQUEST_BASENAME
和PATH_INFO
也受到了这个错误的影响。
在 Mod 安全的第2版中也发生了类似的情况,允许绕过防止用户访问与备份文件相关的特定扩展名文件(如.bak
)的保护,只需发送点URL编码为%2e
,例如:https://example.com/backup%2ebak
。
这项研究提到,可以通过发送一个AWS无法正确解析但后端服务器可以解析的“格式错误”标头来绕过应用于HTTP标头的AWS WAF规则。
例如,发送以下带有SQL注入的请求标头X-Query:
在过去,可以绕过AWS WAF,因为它无法理解下一行是标头值的一部分,而NODEJS服务器可以(已修复)。