HackerOne漏洞报告 #1577940:已封禁用户仍可通过API密钥访问其已删除账户
报告摘要
当用户账户被永久封禁后,该用户将无法提交报告,且在没有待处理付款时账户会被删除。用户无法登录或查看个人资料。但通过使用封禁前生成的API令牌,用户仍能执行以下操作:
- 获取报告
- 获取余额
- 获取收益
- 获取付款
- 获取弱点信息
- 获取程序信息
用户基本上可以执行HackerOne API参考文档中列出的所有操作。
复现步骤
- 创建新账户
- 永久封禁该账户(等待批准后分享被封禁账户的API令牌)
假设:
- 用户名:mrtst
- API令牌:XXXXXXXXXXXXXXXXXXXX=
漏洞利用示例
获取报告(包括单个报告)
1
|
curl "https://api.hackerone.com/v1/hackers/me/reports" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
获取余额
1
|
curl "https://api.hackerone.com/v1/hackers/payments/balance" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
获取收益
1
|
curl "https://api.hackerone.com/v1/hackers/payments/earnings" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
获取付款
1
|
curl "https://api.hackerone.com/v1/hackers/payments/payouts" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
获取弱点信息
1
|
curl "https://api.hackerone.com/v1/hackers/programs/{handle}/weaknesses" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
获取程序信息
1
|
curl "https://api.hackerone.com/v1/hackers/programs" -X GET -u "mrtst:XXXXXXXXXXXXXXXXXXXX=" -H 'Accept: application/json'
|
影响
被封禁的用户可以完全访问其已删除的账户。
补充信息
研究人员后续发现,被封禁的用户甚至可以通过API端点提交新报告:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
curl "https://api.hackerone.com/v1/hackers/reports" \
-X POST \
-u "<YOUR_API_USERNAME>:<YOUR_API_TOKEN>" \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d @- <<EOD
{
"data": {
"type": "report",
"attributes": {
"team_handle": "string",
"title": "string",
"vulnerability_information": "string",
"impact": "string",
"severity_rating": "none",
"weakness_id": 0,
"structured_scope_id": 0
}
}
}
EOD
|
此外,GraphQL端点(https://hackerone.com/graphql)也存在相同漏洞,即使用户已不存在,攻击者仍能获取所有个人资料信息。
处理过程
- 2022年5月22日:漏洞提交
- 2022年5月25日:漏洞被验证并提交给修复团队
- 2022年6月2日:漏洞被分类并发放奖金
- 2022年8月3日:修复完成并验证
- 2022年8月4日:报告状态标记为"已解决"
- 2025年7月14日:报告被公开披露
技术细节
弱点类型:不正确的访问控制 - 通用
严重程度:中等(5.0)
CVE ID:无
赏金:隐藏
该漏洞暴露了API密钥管理中的关键缺陷,即在账户状态变更时未正确撤销已颁发的访问凭证。