通过SCIM配置实现HackerOne账户劫持的技术漏洞分析

本文详细分析了HackerOne平台存在的SCIM配置漏洞,攻击者可通过Okta集成修改已验证域名的邮箱地址,实现对现有用户账户的完全控制,包括默认演示账户的劫持风险。

HackerOne报告 #3178999 - 通过SCIM配置劫持现有HackerOne账户

漏洞概述

经过多次尝试和分析,我成功通过SCIM(跨域身份管理系统)配置实现了对现有用户账户的劫持。要利用此漏洞,需要满足以下条件:

  • 已验证的域名
  • 正常工作的SSO(单点登录)配置

技术分析流程

初始测试过程

首次测试时采用以下步骤:

  1. 将组织用户导入Okta
  2. 收到错误提示:现有用户的邮箱域名与已验证域名不匹配
  3. 修改邮箱地址
  4. 结果:在组织用户页面创建了新用户

成功利用方法

经过多次尝试后,发现了正确的操作序列:

  1. 在Okta中创建攻击者控制的用户(如attacker@verified.com)
  2. 将组织用户导入Okta
  3. 将受害者账户分配给步骤1创建的用户
  4. 将邮箱参数字段修改为attacker@verified.com
  5. 修改密码
  6. 成功获得账户访问权限

Okta字段关键分析

Okta中有两个重要字段:用户名和邮箱。

关键发现:

  • 如果攻击者使用已验证域名verified.com,添加victim@ato.com到Okta,会收到ato.com与H1验证域名设置不匹配的错误
  • 如果随后将用户名和邮箱改为victim@verified.com,会在H1组织中创建新用户
  • 如果保持用户名为victim@ato.com,但邮箱字段改为victim@verified.com,受害者的邮箱将被修改,且不会向受害者发送通知(问题2)

登录机制分析

攻击者无法通过SSO提供商(Okta)登录,因为用户名victim@ato.com已被导入并使用。攻击者设置密码重置时,同样不会向用户发送通知(问题3),新邮箱由攻击者控制。

环境设置

测试前需要完成以下设置:

  • 从指定位置设置沙盒程序,不要删除演示成员
  • 联系HackerOne支持为沙盒程序激活SSO和SCIM配置
  • 在Okta中设置SSO
  • 在Okta中设置SCIM
  • 添加用户

复现步骤

  1. 进入Okta目录,添加可访问邮箱的用户
  2. 进入为Hackerone SCIM配置的Okta应用,导入用户
  3. 在导入的用户中,分配用户demo-member@hackerone.com(如果演示成员被删除,可使用其他用户)
  4. 在Hackerone SCIM配置的Okta应用中,点击Assignments标签,然后点击铅笔图标编辑
  5. 找到邮箱字段,改为控制的且符合验证域名的邮箱
  6. 保存,系统将自动同步
  7. 重置用户密码,即可获得访问权限

影响评估

此漏洞的严重性在于:

  • 所有新组织(包括沙盒)默认存在两个用户:
  • 这些用户始终存在,已是沙盒、私人和公共组织的成员(除非被移除)
  • 攻击者只需导入这些默认成员,保持用户名不变,修改邮箱,重置密码即可获得访问权限

漏洞修复验证

修复后,通过Okta使用SCIM配置用户时,现在要求用户名和邮箱都必须属于HackerOne内控制的验证域名。即使导入用户并将其分配给Okta中控制的现有用户,也总是会创建新用户,而不是用新邮箱地址覆盖该用户。

CVSS评分说明

最终CVSS 4.0评分为7.0(高危),具体评分为:CVSS:4.0/AV:N/AC:L/AT:P/PR:H/UI:A/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N

后续评分(SC、SI、SA)均为"无",因为该漏洞的影响仅限于特定的目标用户账户:

  • 后续机密性(SC:N):账户劫持不会导致受损账户之外系统的数据暴露
  • 后续完整性(SI:N):攻击不会级联改变其他连接系统的数据完整性
  • 后续可用性(SA:N):不会对其他服务或系统造成下游中断

机密性影响评为高(VC:H),因为攻击者可以访问受损账户中的所有信息。此问题已重新分配给api.hackerone.com资产,因为该漏洞特别影响处理SCIM配置的API基础设施。

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