参数污染 + JS 注入绕过 Web 应用防火墙(WAF)技术深度分析报告【红客联盟 AI 分析】

参数污染 + JS 注入绕过 Web 应用防火墙(WAF)技术深度分析报告【红客联盟 AI 分析】

一、研究背景与核心发现

网络安全研究人员(Ethiack 团队主导)在自主渗透测试中,发现一种 **“HTTP 参数污染 + JavaScript 注入” 的组合技术 **—— 利用 Web 应用框架(如ASP.NET)与 WAF 的参数解析差异,绕过传统 WAF 防护,成功执行跨站脚本(XSS)恶意代码。
该技术主要针对受高度限制性 WAF 保护的 Web 应用(以ASP.NET为例),解决了 “传统 XSS payload 被 WAF 拦截” 的经典难题,暴露了现代 WAF 在 “框架特定解析逻辑” 和 “上下文感知检测” 上的短板。

二、核心技术原理:解析差异与代码组合

(一)关键突破口:框架的重复参数处理行为

不同 Web 应用框架对 “同一名称多个 HTTP 参数” 的解析规则存在差异,这是绕过 WAF 的核心前提。其中,ASP.NET的解析特性是本次研究的重点:
  • ASP.NET通过HttpUtility.ParseQueryString()方法,将同一参数的多个值用逗号连接(微软官方文档明确此行为:“同一查询字符串参数的多次出现列为单个条目,每个值之间用逗号分隔”);
  • 其他框架的解析行为对比如下:
框架 输入示例(重复参数) 输出结果(参数最终值)
ASP.NET / ASP ?param=val1&param=val2 param=val1,val2(逗号连接)
Golang 网络 /http ?param=val1&param=val2 param=["val1","val2"](数组)
Python – Zope ?param=val1&param=val2 param=["val1","val2"](数组)
Node.js ?param=val1&param=val2 param=val1,val2(逗号连接)

(二)JS 逗号运算符的 “组合生效” 作用

JavaScript 的逗号运算符(,) 支持在单个语句中按顺序执行多个表达式,且最终返回最后一个表达式的结果。这一特性使得 “拆分的恶意代码” 在组合后可正常执行:
  • 攻击者将恶意 JS 代码拆分为多个参数值,单个参数值看似良性(规避 WAF 单参数检测);
  • ASP.NET解析后,多个参数值被逗号连接,形成语法合法的恶意 JS;
典型示例
  • 构造查询字符串:/?q=1'&q=alert(1)&q='2
  • ASP.NET解析后结果:1',alert(1),'2
  • 注入到易受攻击的 JS 上下文(如const reflectedString = '1',alert(1),'2';),最终执行alert(1),触发 XSS。

三、WAF 绕过测试:结果与规律

研究团队针对17 种不同厂商 / 云服务商的 WAF 配置(含 Azure WAF、AWS WAF 等主流产品),测试了 3 类不同复杂度的 payload,揭示了 WAF 检测能力的显著差异:

(一)payload 类型与成功率对比

payload 类型 示例 绕过 WAF 的成功率 核心逻辑
简单注入 ?q=';alert(1),' 17.6% 直接注入完整恶意代码,易被 WAF 签名检测
参数污染 + 分号 ?q=1'+1;let+asd=window&q=def='al'+'ert' 52.9% 拆分代码并引入分号,破坏 WAF 特征匹配
参数污染 + 换行符 ?q=1'%0aasd=window&q=def="al"+"ert" 70.6% %0a(换行符)进一步混淆,规避上下文检测

(二)WAF 被绕过的三大核心原因

  1. 单参数孤立分析:多数 WAF 仅单独检测每个参数值,未关联 “同一参数多个值的组合效果”,导致拆分的良性片段被放行;
  2. 缺乏框架特定解析模拟:WAF 未模拟目标 Web 框架(如ASP.NET)的参数解析规则,无法预判 “多个参数组合后的实际代码”;
  3. 依赖传统 XSS 签名:WAF 仅检测已知 XSS 特征(如alert(1)完整字符串),对 “功能等效但结构拆分” 的 payload(如'al'+'ert'(1))无法识别。

四、典型案例:Azure WAF 的绕过实例

研究中发现,Azure WAF可被特定 payload 绕过,核心原因是 “WAF 的转义字符处理” 与 “JavaScript 的实际解释” 存在解析差异:
  • 构造 payload:?q=test\\';alert(1);//
  • WAF 检测逻辑:认为\\'是 “转义后的单引号”,判定为良性;
  • 实际 JS 执行:test\\';alert(1);//被解析为test\';alert(1);//\\转义为\),最终突破字符串上下文,执行alert(1)
  • 结果:payload 成功注入并触发 XSS,证明即使主流云厂商 WAF 也存在此类风险。

五、研究启示与防御建议

(一)对 WAF 厂商的启示

  1. 新增框架特定解析模块:针对ASP.NET、Node.js 等框架的参数处理规则,模拟真实解析逻辑,关联分析同一参数的多个值;
  2. 强化上下文感知检测:不仅检测参数值本身,还需结合 “参数注入的目标上下文(如 JS 字符串、HTML 标签)” 判断风险;
  3. 更新 XSS 检测规则:覆盖 “拆分组合”“字符拼接”(如'al'+'ert')等非传统 XSS payload,避免依赖单一特征。

(二)对 Web 开发者的防御建议

  1. 优先修复底层 XSS 漏洞:从代码层面过滤用户输入(如对单引号、逗号等特殊字符转义),而非仅依赖 WAF;
  2. 统一参数解析逻辑:若使用ASP.NET等支持 “逗号连接” 的框架,对重复参数值进行严格校验,拒绝包含恶意字符(如alert;)的组合;
  3. 监控异常参数模式:日志中排查 “同一参数多次出现” 的请求,尤其是包含';%0a等字符的参数值。
红客联盟 AI 警示:本次研究表明,WAF 的 “解析逻辑不匹配” 是重大安全隐患。建议企业在部署 WAF 时,优先选择支持 “框架特定解析” 和 “上下文感知” 的产品,并从代码层面根治 XSS 等底层漏洞,构建 “WAF + 代码防护” 的双重防线。
(报告生成:红客联盟 AI 智能安全分析员 | 2025 年 9 月 6 日)
版权声明·<<<---红客联盟--->>>·免责声明
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。
联系我们:admin@chnhonker.com
威胁分析

PgAdmin OAuth 劫持漏洞(CVE-2025-9636)深度分析报告【红客联盟 AI 分析】

2025-9-9 23:35:31

威胁分析

Libraesva ESG 命令注入漏洞(CVE-2025-59689)深度分析报告【红客联盟 AI 分析】

2025-9-23 15:56:06

搜索