hacktricks/pentesting-web/parameter-pollution.md

5.7 KiB
Raw Blame History

参数污染

从零开始学习AWS黑客技术 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式

{% embed url="https://websec.nl/" %}

HTTP参数污染HPP概述

HTTP参数污染HPP是一种攻击技术攻击者通过操纵HTTP参数以意外方式改变Web应用程序的行为。这种操纵是通过添加、修改或复制HTTP参数来实现的。这些操纵的效果对用户来说并不直接可见但可以显着改变服务器端应用程序的功能在客户端端产生可观察的影响。

HTTP参数污染HPP示例

银行应用程序的交易URL

  • 原始URL https://www.victim.com/send/?from=accountA&to=accountB&amount=10000

通过插入额外的from参数:

  • 操纵后的URL https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC

交易可能会错误地计入accountC而不是accountA展示了HPP操纵交易或其他功能如密码重置、2FA设置或API密钥请求的潜力。

特定技术的参数解析

  • 参数的解析和优先级取决于底层Web技术影响HPP的利用方式。
  • Wappalyzer这样的工具有助于识别这些技术及其解析行为。

PHP和HPP利用

OTP操纵案例

  • 背景: 一个需要一次性密码OTP的登录机制被利用。
  • 方法: 通过使用Burp Suite等工具拦截OTP请求攻击者复制了HTTP请求中的email参数。
  • 结果: OTP原本应发送到初始电子邮件但却发送到了操纵请求中指定的第二个电子邮件地址。这个漏洞允许绕过预期的安全措施未经授权地访问。

这种情况突显了应用程序后端的一个关键疏忽,该后端处理第一个email参数以生成OTP但使用最后一个参数进行传递。

API密钥操纵案例

  • 场景: 一个应用程序允许用户通过配置文件设置页面更新其API密钥。
  • 攻击向量: 攻击者发现通过向POST请求附加额外的api_key参数可以操纵API密钥更新功能的结果。
  • 技术: 利用Burp Suite等工具攻击者构造了一个请求其中包括两个api_key参数一个合法的一个恶意的。服务器只处理最后一个出现的参数将API密钥更新为攻击者提供的值。
  • 结果: 攻击者控制了受害者的API功能可能未经授权地访问或修改私人数据。

这个例子进一步强调了安全参数处理的必要性特别是在像API密钥管理这样关键的功能中。

参数解析Flask vs. PHP

Web技术处理重复的HTTP参数的方式不同影响它们对HPP攻击的易受性

  • Flask 采用遇到的第一个参数值,例如在查询字符串a=1&a=2中优先考虑初始实例a=1而不是后续的重复。
  • PHP在Apache HTTP服务器上 相反,优先考虑最后一个参数值,在给定示例中选择a=2。这种行为可能无意中促进了HPP攻击通过优先考虑攻击者操纵的参数而不是原始参数。

参考资料

{% embed url="https://websec.nl/" %}

从零开始学习AWS黑客技术 htARTEHackTricks AWS红队专家

支持HackTricks的其他方式