HackerOne API访问控制漏洞:封禁用户仍可通过API密钥访问已删除账户

本文详细披露了HackerOne平台存在的一个严重安全漏洞:即使用户账户被封禁并删除,攻击者仍可通过之前生成的API密钥继续访问账户数据、提交报告并获取敏感信息,涉及多个API端点的未授权访问问题。

报告 #1577940 - 封禁用户仍可通过HackerOne的API使用其API密钥访问已删除账户

时间线

mrmax4o4 向HackerOne提交报告
2022年5月22日, 2:41am UTC

报告内容

团队您好,

摘要: 当用户账户被永久封禁时,他将无法再提交报告,且一旦没有待处理付款,账户将被删除。用户将无法访问账户(登录)或显示其个人资料。但通过使用之前生成的API令牌(封禁前),用户将能够:

  • 获取报告
  • 获取余额
  • 获取收益
  • 获取付款
  • 获取弱点
  • 获取程序

通常,用户将能够执行以下操作:https://api.hackerone.com/hacker-reference/#hacker-reference

重现步骤:

  1. 创建新账户
  2. 永久封禁该账户(我正在等待批准,并将分享封禁账户的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'

影响: 被封禁的用户可以完全访问其已删除的账户。

我注意到你们限制测试任何封禁绕过,这只是为了测试目的,此问题是在测试账户上发现和利用的 - 希望我没有违反任何规则。

一旦获得批准,我将分享令牌。

诚挚的, @mrmax4o4


mrmax4o4 发表评论
2022年5月23日, 9:04am UTC

您好, 我刚获得批准,您可以使用此用户@mrtst和以下令牌: 1zco8RyMaV6EkgQ+5rwOSLExuGww36dr8uOHC7U5oEbA=

(更新了所有curl命令中使用新令牌的示例)

谢谢,


kaidyn 发表评论
2022年5月25日, 8:56am UTC

嗨 @mrmax4o4, 感谢您的提交。希望您一切安好。您的报告正在审核中,HackerOne分类团队将在有额外信息可分享时回复您。 祝您有美好的一天! 诚挚问候, @kaidyn

kaidyn 将报告标题从"封禁用户仍可通过HackerOne的API访问其已删除账户"改为"封禁用户仍可通过HackerOne的API使用其API密钥访问已删除账户"
2022年5月25日, 9:07am UTC

kaidyn 添加弱点"不正确的访问控制 - 通用"
2022年5月25日, 9:07am UTC

kaidyn 将严重性从严重更新为中等(5.0)
2022年5月25日, 9:07am UTC

kaidyn 发表评论
2022年5月25日, 9:10am UTC

您好 @mrmax4o4, 感谢您的提交! 我们能够验证您的报告,并已提交给相应的修复团队进行审查。他们将告知此报告的最终裁决,以及是否/何时实施修复。请注意,这并不意味着团队已接受报告,因为根据我们的威胁模型,我们可能可以接受此行为。请注意,状态和严重性可能会发生变化。 谢谢, @kaidyn


mrmax4o4 发表评论
2022年5月25日, 3:56pm UTC

您好 @kaidyn, 感谢您的回复和努力。 我忘记提到影响CVSS完整性的一个点,正如我之前提到的:

当用户账户被永久封禁时,他将无法再提交报告,且一旦没有待处理付款,账户将被删除。

如果用户尝试提交报告,他将收到此消息:

“您的账户于202x-xx-xx被封禁,持续xxxx天(结束于202x-xx-xx)。 作为此封禁的一部分,适用以下限制: • 您的账户被排除在私有程序的邀请之外。 • 报告提交已为您的账户禁用。”

然而,用户能够使用此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 "<您的API用户名>:<您的API令牌>" \
-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

因此,如果用户被封禁且其付款处理时间是每月(如果是每天,用户将没有机会提交并获得另一个待处理付款),他可以提交新报告,通过UI回答评论,并获得新付款,所以实际上用户并没有被封禁!顺便说一下,关于"您的账户被排除在私有程序的邀请之外",被封禁的用户仍然收到邀请(已测试)。

最后一点,我发现https://hackerone.com/graphql也容易受到相同问题的影响,即使用户不再存在,我也可以获取所有个人资料信息,我制作了一个测试脚本:h1.sh (F1743969)

1
./h1.sh <已删除/被封禁的用户名>

在上述脚本中,我尽量保持简单,并检索了一些基本信息(用户信息、报告ID、报告状态、团队名称),实际上数据是公开的,是的,但由于用户的个人资料不再可用,所以这很重要。

我认为我们应该重新计算严重性。 诚挚的, @mrmax4o4

附件:1个附件 F1743969: h1.sh


kaidyn 发表评论
2022年5月26日, 7:07am UTC

嘿 @mrmax4o4, 感谢提供额外信息。内部团队仍在审查此问题,并在计算整体影响/严重性时会考虑额外信息。 感谢您的耐心! 最好的, @kaidyn


quantum_love 将状态更改为已分类
2022年6月2日, 11:01am UTC

您好 @mrmax4o4, 感谢您的提交,这是我们想要修复的一个盲点! 此外,我们同意当前的严重性评级。 祝您有美好的一天,并期待您的下一次提交!

HackerOne 奖励mrmax4o4赏金
2022年6月2日, 11:02am UTC

再次感谢您将此问题提请我们注意,非常感谢!


mrmax4o4 发表评论
2022年6月2日, 11:15am UTC

谢谢!


mrmax4o4 发表评论
2022年6月3日, 7:50am UTC

您好 @rafael_q9s1j, 还有一件事,我认为评估是基于"封禁用户仍可通过HackerOne的API使用其API密钥访问已删除账户",但我在评论中添加了另一个问题,即在我被封禁时能够发送报告,这可以通过与以下内容链式使用:

当用户账户被永久封禁时,他将无法再提交报告,且一旦没有待处理付款,账户将被删除。

这使得封禁无效,并将撤销账户删除步骤。这是一个单独的问题,但我将其添加进来是为了同时处理两者以节省时间。然而,我没有注意到基于此的严重性变化,所以我应该为此提交新报告吗? 谢谢,


quantum_love 发表评论
2022年6月3日, 9:03am UTC

您好 @mrmax4o4, 很高兴澄清!

即能够发送报告

当前的严重性评级已考虑这一点。我们最大的担忧是未有效封禁所违反的机密性。 我们认为在这种情况下提交报告的能力是垃圾邮件,并且没有直观感觉那么有影响。 如果您分开提交这些,我们会将这部分作为信息性关闭,因为我们现在知道API密钥仍然有效,从而获得了所有价值。 再次感谢,并祝黑客愉快!


h1_chriszo111 HackerOne员工将状态更改为重新测试
2022年8月3日, 10:41am UTC

嘿 @mrmax4o4,您能检查一下我们发布的修复是否有效吗?


mrmax4o4 完成重新测试
2022年8月3日, 11:12am UTC

附件:1个附件 F1851069: Screen_Shot_2022-08-03_at_1.05.27_PM.png

HackerOne 接受重新测试者的完成重新测试
2022年8月4日, 9:57am UTC

h1_chriszo111 HackerOne员工关闭报告并将状态更改为已解决
2022年8月4日, 9:57am UTC

mrmax4o4 请求披露此报告
2025年6月14日, 8:50pm UTC

此报告已被披露。6天前

报告详情

报告时间: 2022年5月22日, 2:41am UTC
报告者: mrmax4o4
报告对象: HackerOne
管理:
参与者:
报告ID: #1577940
状态: 已解决
严重性: 中等(5.0)
披露时间: 2025年7月14日, 8:50pm UTC
弱点: 不正确的访问控制 - 通用
CVE ID:
赏金: 隐藏
账户详情:

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计