hacktricks/pentesting-web/parameter-pollution.md

80 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 参数污染
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASSHackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>
# 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](https://addons.mozilla.org/en-US/firefox/addon/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`中优先考虑初始实例而不是后续的重复实例。
- **PHP在Apache HTTP服务器上** 相反,优先考虑最后一个参数值,在给定示例中选择`a=2`。这种行为可能无意中促进HPP攻击通过优先考虑攻击者操纵的参数而不是原始参数。
# 参考资料
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASSHackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details>