Agent Skills
返回列表
🔒

HTTP参数污染

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/http-parameter-pollution-237p。

技能介绍

要解决的问题

a=1&a=2 在 HTTP 层不是错误。浏览器、CDN/WAF、反向代理、应用框架和业务代码都可能对重复键做不同解释:取第一个、取最后一个、逗号合并或变成数组。当安全校验读取一个出现位置,而实际动作读取另一个位置时,就形成解析分裂。WAF 与源站栈不一致、内部 HTTP 客户端重建 query string、JSON 重复键或 Content-Type 混乱都会放大这种差异。

技能如何工作

它按完整请求路径建模:browser → CDN/WAF → reverse proxy → app framework → business code。核心假设是 security check 与 action 读取了不同的同名参数。方法先发送基线 a=1&a=2 指纹前端栈与源站栈,再交换顺序发送 a=1&a=2 与 a=2&a=1;POST 在 body 重复同样模式,JSON 场景测试重复键与 Content-Type confusion。随后参考服务器行为矩阵核对 PHP/Apache、ASP.NET/IIS、JSP/Tomcat、Python/Django、Python/Flask、Node.js/Express、Perl/CGI、Ruby/Rack、Go net/http 的 first/last/merge/array 倾向,并用 payload patterns 覆盖基础重复键、数组风格、混合数组与标量、编码 ampersand、嵌套/bracket keys、JSON duplicate keys。攻击场景将 HPP 与 WAF bypass、SSRF、CSRF、业务逻辑(如支付)结合,重点确认 validator 与 fetcher 各自消费哪个出现位置。工具可用 Burp Suite Repeater、Param Miner/扩展,OWASP ZAP Manual Request Editor,或自定义脚本保留原始顺序构造 raw HTTP;在受控环境记录 raw query string 有价值,因为框架可能只暴露胜出值,日志却保留完整字符串。

适用边界与注意点

只应在明确授权范围内测试,尤其涉及支付、账户设置等可改变服务端状态的目标。先记录各层 parser 行为,再进入高风险请求;CSRF 场景只用于有清晰 state-changing target 的授权评估。它提供的是解析差异测试框架,不保证发现漏洞,也不能替代对 race conditions、server-side rounding 等关联条件的单独验证。

使用场景

  • 当CDN/WAF与源站技术栈不同,需确认重复参数`a=1&a=2`在各层被解析为第一个、最后一个还是合并值时使用
  • 内部HTTP客户端会重建query string,需测试重复参数是否导致安全校验与实际动作读取不同值时使用
  • 涉及支付等业务逻辑,需验证重复参数是否让校验逻辑与业务逻辑读取不同参数出现位置时使用
  • 测试JSON请求时,需确认重复键或Content-Type混淆是否造成解析差异时使用

适合人员

  • 负责WAF规则验证的安全工程师,需要测试重复参数在各层的解析差异是否导致校验漏洞
  • 开发支付系统的后端工程师,想确认重复参数是否让支付校验与金额计算读取不同值
  • 设计内部HTTP客户端的开发者,需要验证重建query string时重复参数是否引发解析分裂
  • 进行授权CSRF评估的安全测试人员,需要通过重复CSRF token测试不同解析器的行为