hacktricks/pentesting-web/parameter-pollution.md

5.8 KiB
Raw Blame History

参数污染

从零开始学习AWS黑客技术成为 htARTE (HackTricks AWS 红队专家)

支持HackTricks的其他方式

摘自 https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654

摘要 :

HTTP参数污染HPP指的是污染Web应用程序的HTTP参数以实现特定的恶意任务。它指的是操纵网站在HTTP请求期间接收的参数的处理方式。它改变了网站从其预期的行为。HTTP参数污染是一种简单的攻击方式但它是有效的。

当您污染任何参数时,代码只在服务器端运行,这对我们来说是不可见的,但我们可以在屏幕上看到结果。中间的过程是一个黑盒。

例如有一个URL https://www.anybank.com/send它有三个参数

  1. from :
  2. to :
  3. 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技术。下面是一些技术及其参数解析的截图。技术及其参数解析

Image for post

我想分享我发现的HPP之一我能够利用这个漏洞接管一个账户。

我是如何发现这个漏洞的?

  1. 我去了那个程序的登录页面它要求登录时输入OTP

发送OTP

Image for post

2. 我输入了一个电子邮件并点击了“发送一次性密码”

3. 我使用burp suite拦截了请求并使用相同的参数添加了另一个电子邮件我为测试目的创建了两个电子邮件Burp请求

Image for post

4. 我收到了shrey……@gmail.com的OTP发送到我的另一个账户radhika…..@gmail.com OTP

Image for post

5. 我复制了OTP并回到程序登录屏幕上的shrey….@gmail.com我输入了这个OTP我进入了账户。账户接管

Image for post

所以这里发生的是后端应用程序取了第一个“email”参数的值来生成OTP并使用了第二个“email”参数的值来提供值这意味着shrey….@gmail.com的OTP被发送到了radhika….@gmail.com。

注意: 在第四步中我收到OTP到radhika….@gmail.com的图片上我感到困惑因为消息说Hi Radhika所以我以为参数没有被污染OTP是为radhika….@gmail.com的但当我在shrey….@gmail.com上尝试OTP时它起作用了。

Flask & PHP

这篇文章中,您可以看到像a=1&a=2这样的HTTP查询将被Flask和运行在Apache HTTP服务器上的PHP不同地解释。在Flask中参数将是1首次出现而在PHP中将是2(最后出现)。

从零开始学习AWS黑客技术成为 htARTE (HackTricks AWS 红队专家)

支持HackTricks的其他方式