HTTP参数污染漏洞

发布于:2024-06-11 ⋅ 阅读:(43) ⋅ 点赞:(0)

1.HPP漏洞概述

HTTP参数污染攻击是指通过在HTTP请求中插入多个同名参数,混淆服务器对参数的处理逻辑,进而实现攻击目的。这种攻击可以在URL查询字符串、POST数据和HTTP头部中进行。例如,以下是一个漏洞的例子:

银行应用程序的交易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操纵交易或其他功能(如密码重置、双因素认证设置或API密钥请求)的潜力。


2.HPP漏洞利用手段

1、OTP操纵案例

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

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

2、API密钥操纵案例:

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

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


3.参数解析:Flask vs PHP

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

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

网站公告

今日签到

点亮在社区的每一天
去签到