Proxy / WAF Protections Bypass
Last updated
Last updated
学习与实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习与实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
技术 来自这项研究。
Nginx 规则示例:
为了防止绕过,Nginx 在检查路径之前执行路径规范化。然而,如果后端服务器执行不同的规范化(移除 Nginx 不移除的字符),则可能绕过此防御。
Nginx 版本
Node.js 绕过字符
1.22.0
\xA0
1.21.6
\xA0
1.20.2
\xA0
, \x09
, \x0C
1.18.0
\xA0
, \x09
, \x0C
1.16.1
\xA0
, \x09
, \x0C
Nginx 版本
Flask 绕过字符
1.22.0
\x85
, \xA0
1.21.6
\x85
, \xA0
1.20.2
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
1.18.0
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
1.16.1
\x85
, \xA0
, \x1F
, \x1E
, \x1D
, \x1C
, \x0C
, \x0B
Nginx 版本
Spring Boot 绕过字符
1.22.0
;
1.21.6
;
1.20.2
\x09
, ;
1.18.0
\x09
, ;
1.16.1
\x09
, ;
Nginx FPM 配置:
Nginx 被配置为阻止对 /admin.php
的访问,但可以通过访问 /admin.php/index.php
来绕过此限制。
在这篇文章中 解释了 ModSecurity v3(直到 3.0.12)不正确地实现了 REQUEST_FILENAME
变量,该变量应该包含访问的路径(直到参数开始)。这是因为它执行了 URL 解码以获取路径。
因此,像 http://example.com/foo%3f';alert(1);foo=
这样的请求在 mod security 中将认为路径只是 /foo
,因为 %3f
被转换为 ?
结束了 URL 路径,但实际上服务器接收到的路径将是 /foo%3f';alert(1);foo=
。
变量 REQUEST_BASENAME
和 PATH_INFO
也受到此错误的影响。
在 Mod Security 的版本 2 中发生了类似的情况,允许绕过一种保护,该保护阻止用户访问与备份文件相关的特定扩展名的文件(例如 .bak
),只需通过发送点 URL 编码为 %2e
,例如:https://example.com/backup%2ebak
。
这项研究 提到可以通过发送一个“格式错误”的头部来绕过应用于 HTTP 头部的 AWS WAF 规则,该头部未被 AWS 正确解析,但被后端服务器解析。
例如,发送以下请求,在头部 X-Query 中包含 SQL 注入:
可以绕过 AWS WAF,因为它无法理解下一行是头部值的一部分,而 NODEJS 服务器可以(这个问题已被修复)。
通常 WAF 对请求的长度有一定的限制,如果 POST/PUT/PATCH 请求超过该限制,WAF 将不会检查该请求。
对于 AWS WAF,您可以 查看文档:
可以检查的应用负载均衡器和 AWS AppSync 保护的 web 请求体的最大大小
8 KB
可以检查的 CloudFront、API Gateway、Amazon Cognito、App Runner 和 Verified Access 保护的 web 请求体的最大大小**
64 KB
来自 Azure 文档:
较旧的 Web 应用防火墙使用核心规则集 3.1(或更低版本)允许大于 128 KB 的消息,通过关闭请求体检查,但这些消息不会被检查漏洞。对于较新版本(核心规则集 3.2 或更高版本),可以通过禁用最大请求体限制来实现。当请求超过大小限制时:
如果是 预防模式:记录并阻止请求。
如果是 检测模式:检查到限制,忽略其余部分,并在 Content-Length
超过限制时记录。
来自 Akamai:
默认情况下,WAF 仅检查请求的前 8KB。通过添加高级元数据,可以将限制增加到 128KB。
来自 Cloudflare:
最多 128KB。
根据 Unicode 规范化的实现(更多信息 这里),共享 Unicode 兼容性的字符可能能够绕过 WAF 并作为预期的有效负载执行。兼容字符可以在 这里 找到。
https://github.com/ustayready/fireprox: 生成一个API网关URL以供ffuf使用
https://github.com/rootcathacking/catspin: 类似于fireprox
https://github.com/PortSwigger/ip-rotate: 使用API网关IP的Burp Suite插件
https://github.com/fyoorer/ShadowClone: 根据输入文件大小和拆分因子动态确定激活的容器实例数量,输入被拆分为多个块以进行并行执行,例如100个实例处理来自10,000行输入文件的100个块,拆分因子为100行。
可以使用不同的技术来绕过防火墙上的正则表达式过滤器。示例包括交替大小写、添加换行符和编码有效负载。各种绕过的资源可以在PayloadsAllTheThings和OWASP找到。以下示例摘自这篇文章。
nowafpls: Burp 插件,通过长度向请求添加垃圾数据以绕过 WAF
学习和实践 AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) 学习和实践 GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)