扫码领资料
获网安教程
来Track安全社区投稿~
赢千元稿费!还有保底奖励~(https://bbs.zkaq.cn)
5 种利用 HTTP 参数污染 (HPP) 攻击的小技巧
img
HTTP 参数污染(HPP)是一种常被忽视的 Web 漏洞,发生在 Web 应用程序错误处理多个相同的 HTTP 参数时。攻击者可以操纵这些参数,以绕过安全控制、篡改输入验证或利用逻辑漏洞。在本文中,我们将探讨五种利用 HPP 漏洞的技术,并了解其对 Web 应用程序的影响。
1. 绕过安全控制
某些应用程序会基于单个参数值应用安全控制,例如身份验证、访问控制或速率限制。如果后端仅处理参数的第一个或最后一个出现的值,攻击者可以注入多个相同参数来覆盖或绕过这些安全控制。
示例:绕过身份验证
例如,考虑以下登录请求:
POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
username=admin&password=wrongpassword
如果应用程序仅处理参数的第一个或最后一个出现的值,攻击者可以注入:
username=admin&password=wrongpassword&password=correctpassword
如果后端仅处理最后一个 password
参数,攻击者可以使用 correctpassword
进行访问,从而绕过身份验证。
2. 操纵 SQL 查询
HPP 可用于向 SQL 查询注入意外的值,可能导致 SQL 注入。
示例:覆盖 ID 参数
考虑一个用于获取用户个人资料的查询:
SELECT * FROM users WHERE id = $_GET['id'];
如果攻击者发送以下payload:
GET /profile?id=1&id=2
根据后端处理重复参数的方式,这可能会导致:
SELECT * FROM users WHERE id =1,2;
如果数据库将 id = 2
解释为有效值,攻击者可能会查看其他用户的个人资料。
3. 篡改 API 调用
API 通常依赖查询参数进行身份验证或数据获取。通过注入多个值,攻击者可以覆盖 API 请求,访问未经授权的数据或修改用户操作。
示例:利用 API Key 参数
如果某个 API 使用 API Key 进行身份验证:
GET /api/data?user=123&apikey=valid-key
可以做如下尝试:
GET /api/data?user=123&apikey=invalid-key&apikey=valid-key
如果后端仅处理最后一个 apikey
参数,攻击者可以通过在末尾提供有效的密钥来绕过 API 限制。
4. 修改电商应用中的价格计算
电商平台通常会将产品价格和折扣作为参数传递。HPP 可用于操纵价格计算并应用意外的折扣。
示例:覆盖价格数值
POST /checkout
product=123&price=100&price=1
如果应用程序仅处理最后一个 price
参数,攻击者可以以 $1 而不是 $100 购买产品。
5. 绕过输入验证和 WAF 规则
Web 应用防火墙(WAF)和输入验证机制通常针对单个参数进行检查。攻击者可以利用 HPP 来规避这些防护措施。
示例:绕过 XSS 过滤
假设 WAF 会拦截用户输入中的 <script>
标签:
comment=<script>alert(1)</script>
攻击者可能利用 HPP 绕过该限制:
comment=<scr&comment=ipt>alert(1)</scr&comment=ipt>
如果后台错误地重构了值,XSS 载荷将会执行。
HTTP 参数污染是一种强大的技术,可以用来绕过身份验证、篡改 API 调用、利用 SQL 查询、修改价格计算并规避安全控制。理解这些漏洞有助于安全研究人员和漏洞奖励猎人识别和报告 web 应用程序中的关键漏洞。
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):5 种利用 HTTP 参数污染 (HPP) 攻击的小技巧
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论