Imperva Cloud WAF 存在一个绕过漏洞,允许攻击者在发送恶意 HTTP POST 负载(如 log4j 漏洞利用、SQL 注入、命令执行、目录遍历、XXE 等)时规避 WAF 规则。
Imperva 团队在收到报告后高度重视,并在短短几天内完成了全局修复,值得称赞。自 2021 年 12 月 22 日起,所有 Cloud WAF 客户已自动获得补丁。Imperva 团队合作愉快,显然拥有成熟、专业且能力强大的安全团队。
向 HTTP POST 请求中添加 Content-Encoding: gzip 标头。保持 POST 数据原样不变,无需编码。只要 Content-Encoding 标头的前四个字节是 gzip,POST 请求就不会被任何 WAF 规则检查。
你可以在 Burp 中通过代理的“匹配与替换”(Match & Replace)功能实现这一点:

添加一个如下所示的新标头:

就这样,大功告成。
针对支持 POST 请求的 URL 运行 imperva_gzip.py,语法如下:
语法:
./imperva_gzip.py [[-t] | [-r]] URL
猜测给定 URL 的 WAF 类型:
$ ./imperva_gzip.py -t https://www.vulnerable.com/search
Imperva Incapsula
$ ./imperva_gzip.py -t https://www.wordpress-user.com/login
WordFence
$ ./imperva_gzip.py -t https://www.cloudflare-customer.com
Cloudflare
检查 WAF 是否受 gzip 绕过漏洞影响:
$ ./imperva_gzip.py https://www.vulnerable.com/search
[+] 能否向 https://www.vulnerable.com/search 发送 POST 请求?
[+] 正在检查是否存在 Imperva WAF...
[+] 正在针对 UNIX 触发器尝试 gzip 绕过...
[+] 存在漏洞!HTTP 响应码: 200
[+] 正在针对 Windows 触发器尝试 gzip 绕过...
[+] 存在漏洞!HTTP 响应码: 200
如果遇到以下错误:
$ ./imperva_gzip.py https://www.vulnerable.com/search
[+] 能否向 https://www.vulnerable.com/search 发送 POST 请求?
[!] 无法向 https://www.vulnerable.com/search 发送 POST 请求。如果允许 30x 重定向,请尝试使用 -r 参数。HTTP 响应码: 302
则在命令行中传递 -r 参数以启用宽松模式。宽松模式默认关闭,即要求 POST 请求预期会收到服务器的 HTTP 200 响应。-r 会将可接受的响应范围扩展至 HTTP 2xx、3xx。
imperva_gzip.py 的退出码如下:
0: 成功获取 WAF 类型后返回。
1: 命令行参数无效。
2: 连接错误。可能为 DNS 错误、超时等。
3: 未检测到 WAF;恶意 UNIX/Windows 负载未被拦截。
4: 检测到 WAF,但非 Imperva。
5: 服务器对测试 POST 请求的响应不是 HTTP 200。
128: 存在 Imperva WAF,但不受 gzip 绕过影响。
129: 绕过对 UNIX 负载有效,但对 Windows 负载无效。
130: 绕过对 Windows 负载有效,但对 UNIX 负载无效。
131: 绕过对 Windows 和 UNIX 负载均有效。
发送三个 POST 请求:
&test=../../../../../../../etc/shadow,以确认 Imperva 会拦截Content-Encoding: gzip 标头,确认 Imperva 不再拦截根据 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding,`Content-Encoding` 标头有四个有效值:
compressdeflategzipbr在测试中,只有 gzip 可以作为绕过方式。
Cloud WAF 由 Imperva 管理。因此,Cloud WAF 的更新几乎会同时影响所有客户。自 2021 年 12 月 22 日起,所有客户均已修补。
gzip 绕过漏洞已在 Imperva 的另一款产品 SecureSphere 中得到修复。SecureSphere v12.6 的发布说明中包含以下段落:
SPHR-58185:当 SecureSphere 无法解压带有“Content-Encoding: gzip/deflate”标头的请求中的 POST 主体时,它既未发出警报,也未阻止该请求通过。
我非常确定这是同一个漏洞,可能继承了与 Cloud WAF 相同的代码……这两个产品中出现如此特定的漏洞绝非偶然。该问题已于 2021 年 2 月在 SecureSphere 中解决,但我们不清楚它从何时开始存在。该漏洞可能已存在数年之久!
Imperva 客户支持:https://www.imperva.com/support/technical-support/