返回

用 PHP 特征绕过 WAF 测试

前端

引言

在实施网站安全措施时,Web 应用程序防火墙 (WAF) 扮演着至关重要的角色。WAF 通过过滤潜在恶意流量来保护应用程序免受攻击。然而,安全研究人员不断探索方法来绕过 WAF,利用应用程序的潜在漏洞执行恶意活动。本文将探讨使用 PHP 特性绕过 WAF 测试的策略,同时提供相关缓解措施。

使用 PHP 特性绕过 WAF

PHP 提供了多种特性,可用于绕过 WAF 保护。这些特性包括:

  • 字符编码转换: 使用诸如 htmlspecialchars()htmlentities() 之类的函数对输入进行编码,可以绕过 WAF 的过滤机制。
  • URL 解码: 通过使用 urldecode() 函数,可以解码 WAF 编码的 URL 参数,从而绕过 WAF 对潜在恶意请求的过滤。
  • 对象注入: 使用 PHP 的对象注入特性,可以将恶意代码注入到合法的对象中,从而绕过 WAF 对恶意代码直接执行的检测。
  • 命名空间污染: 通过使用与 PHP 命名空间冲突的命名空间,可以创建恶意类或函数,从而绕过 WAF 对非法命名空间的检测。

实施缓解措施

为了缓解 PHP 特性绕过 WAF 的风险,可以采取以下措施:

  • 输入验证: 使用强有力的输入验证机制,确保输入数据安全,避免恶意代码的注入。
  • 禁用 PHP 特性: 在可能的情况下,禁用不必要的 PHP 特性,例如对象注入和命名空间污染。
  • 配置 WAF 规则: 正确配置 WAF 规则,以检测和阻止使用 PHP 特性的绕过尝试。
  • 使用应用层防火墙 (ALF): 在 WAF 之前部署 ALF,提供额外的保护层,以检测和阻止更高级别的攻击。

案例研究:利用 PHP 特性绕过 WAF 执行远程代码

为了演示 PHP 特性绕过 WAF 的实际案例,我们创建了一个简单的、易受攻击的远程代码执行脚本。该脚本部署在 Cloudflare WAF 和 ModSecurity + OWASP CRS3 之后。

使用 htmlspecialchars() 函数对输入进行编码,我们能够绕过 Cloudflare WAF 的过滤机制。然后,通过使用 urldecode() 函数对 WAF 编码的 URL 参数进行解码,我们能够绕过 ModSecurity + OWASP CRS3 对潜在恶意请求的过滤。

结论

了解 PHP 特性如何被滥用以绕过 WAF 测试至关重要。通过实施强有力的缓解措施,例如输入验证、禁用不必要的 PHP 特性以及配置 WAF 规则,组织可以降低安全风险并保护其应用程序免受恶意攻击。通过结合 WAF 保护、ALF 和持续的安全监控,组织可以建立稳固的防御,以抵御不断发展的威胁环境。