
研究人员发现了一种通过HTTP参数污染技术结合JavaScript注入来绕过Web应用防火墙(WAF)的高级方法。这项由Bruno Mendes开展的研究测试了包括AWS、Google Cloud、Azure和Cloudflare在内的17种主流WAF配置,揭示了当前Web安全基础设施存在的严重漏洞。该技术利用了WAF引擎与Web应用框架(特别是ASP.NET的参数处理机制)之间的解析差异,成功执行了可规避传统安全检测机制的跨站脚本(XSS)攻击。
核心发现
- 将XSS载荷分散到多个HTTP参数可有效规避WAF检测
- 17种主流WAF配置中仅有3种能拦截复杂的参数污染攻击
- AI黑客机器人实现了100%的绕过成功率,可在数秒内发现简单漏洞
利用ASP.NET参数拼接特性
这项突破性技术利用了ASP.NET处理重复HTTP参数时的特殊行为。当ASP.NET通过HttpUtility.ParseQueryString()方法遇到同名参数时,会使用逗号连接它们的值。这种特性与JavaScript的逗号操作符语法结合后,创造了精妙的绕过机会。
Ethiack团队的研究人员展示了类似/?q=1'&q=alert(1)&q='2这样的查询字符串如何被ASP.NET处理为1',alert(1),'2的拼接形式。当该载荷被插入JavaScript上下文(如userInput = 'USER_CONTROLLED_DATA')时,就会形成有效的JavaScript代码:userInput = '1',alert(1),'2'。JavaScript中的逗号操作符会顺序执行每个表达式,在保持语法有效性的同时执行恶意的alert(1)函数。
传统WAF难以检测这种技术,因为它们通常只分析单个参数,而无法理解Web框架如何解析和拼接多个参数值。Bruno Mendes测试了三种复杂度递增的载荷:从简单的q=';alert(1),'注入尝试,到使用换行符和变量赋值的复杂参数污染载荷,如q=1'%0aasd=window&q=def="al"+"ert"&q=asddef+'。
WAF漏洞曝光
测试结果揭示了当前WAF防护机制存在的重大缺陷。17种测试配置中仅有3种能成功拦截所有手工制作的载荷:采用ModSecurity规则的Google Cloud Armor、使用Microsoft默认规则集2.1的Azure WAF,以及所有open-appsec配置。值得注意的是,包括AWS托管规则、Cyber Security Cloud规则集和F5规则集在内的多个AWS WAF规则集,对所有测试载荷均未能拦截。
随着载荷复杂度的提升,绕过成功率急剧上升:简单载荷的绕过率为17.6%,而复杂参数污染技术的成功率高达70.6%。更令人担忧的是,研究人员的自动化"黑客机器人"实现了100%的检测规避率,能够为先前表现稳健的WAF配置找到绕过方法。例如,该机器人发现Azure WAF可通过test\';alert(1);//这样的简单载荷绕过,这利用了转义字符处理中的解析差异。
这项研究揭示了一个关键的安全悖论:投入重金部署WAF解决方案的企业,可能仍然面临复杂参数污染攻击和出人意料简单的绕过技术的威胁。研究结果表明,基于特征识别的WAF特别容易受到此类攻击,而基于机器学习的解决方案虽然展现出更好的检测能力,但仍存在可利用的漏洞。该研究强调了WAF无法完全模拟应用解析行为的根本局限,这为技术娴熟的攻击者创造了可乘之机。
参考来源:
WAFs protection Bypassed to Execute XSS Payloads Using JS Injection with Parameter Pollution
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



