HTTP参数污染

01 概述 
HTTP参数污染(HPP)是指污染Web应用程序的HTTP参数以实现特定的恶意攻击 。它指的是操纵网站如何处理它在 HTTP 请求期间接收到的参数,它改变了网站预期的行为 。HTTP 参数污染是一种简单但有效的攻击方式 。
 
当你污染任何参数时,代码只在服务器端运行,这是不可见的,但我们可以在屏幕上看到结果,中间的过程是一个黑盒 。
 
例如,有一个 URL
https://www.anybank.com/send 具有三个参数:
from :to :amount :URL:https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000现在这是一个正常的 URL,它将处理从 accountA 到 accountB 的 10000 交易,但是如果我们添加另一个相同的参数“from :”会怎么样?所以 URL 将类似于:
https://www.anybank.com/send/?from=accountA&to=accountB&amount=10000&from=accountC当此 URL 将进行 10000 的交易时,将从 accountC 而不是 accountA 中扣除,这就是您在 HTTP 参数污染攻击中操纵参数的方式 。此漏洞的范围不仅限于 GET 请求,您还可以对基于 POST 的请求执行此攻击 。你可以在很多地方尝试这个漏洞,比如密码更改、2FA、评论、个人资料照片上传、传递 API 密钥的参数、OTP 等 。
 
当你操纵任何参数时,它的结果取决于每种Web技术如何解析它们的参数 。您可以使用“WAppalyzer”来识别 Web 技术 。下面是部分技术及其参数解析的截图 。

HTTP参数污染

文章插图
 
我想分享我在HPP 攻击中的一个案例,我可以利用这个漏洞接管一个帐户 。
 
02 案例分享 
我如何找到这个漏洞?
 
1、我访问那个系统的登录页面,它要求一个 OTP 用于登录 。
HTTP参数污染

文章插图
 
2. 我输入邮箱地址并点击“发送一次性密码”
 
3. 我使用 burpsuite 拦截请求并使用相同的参数添加了另一个邮箱地址(我创建了两个邮箱用于测试)
HTTP参数污染

文章插图
 
4. 我收到了一个 shrey……@gmail.com 的OTP ,在我的另一个帐户 radhika……@gmail.com中 。
HTTP参数污染

文章插图
 
5. 我在那个系统的登录页面输入了这个 OTP ,并进入了shrey用户中心 。
HTTP参数污染

文章插图
 
所以这里发生的是后端应用程序使用第一个“email”参数的值生成一个 OTP,并使用第二个“email”参数的值来接收该值,这意味着一个 shrey….@gmail.com 的 OTP 被发送到 radhika….@gmail.com 。
 
注意:在第 4 步的图片中,我收到了 radhika…@gmail.com 的 OTP我很困惑,因为消息说你好 Radhika,所以我认为参数没有被污染,OTP 是给 radhika….@ gmail.com, 但当我在尝试 OTP 时 shrey…@gmail.com 它起作用了 。
 
缓解:
应执行适当的输入验证以防止此类攻击 。
 
参考及来源:
https://shahjerry33.medium.com/http-parameter-pollution-its-contaminated-85edc0805654

【HTTP参数污染】


    推荐阅读