零点击账户接管漏洞:密码重置中的JWT令牌泄露与利用

本文详细分析了Remitly平台密码重置功能中的零点击账户接管漏洞。攻击者通过拦截HTTP请求、篡改JWT令牌和会话参数,无需用户交互即可完全控制受害者账户,涉及Burp Suite工具使用和身份验证机制绕过技术。

[CRITICAL] 通过密码重置实现零点击账户接管 [AUTH-3243] /orchestrator/v1/password_reset/start

摘要

在目标网站的密码重置功能中发现了一个零点击账户接管漏洞。该漏洞允许攻击者在无需受害者任何交互或同意的情况下重置受害者密码,导致受害者账户被完全入侵。

操作系统: WINDOWS
是否使用VPN: 否
浏览器: 攻击者使用FIRFOX,受害者使用Burp Browser

重现步骤

  1. 访问密码重置页面: 导航至网站上的“忘记密码”或“重置密码”部分。
  2. 为受害者和攻击者账户发起密码重置: 在密码重置表单中输入受害者的电子邮件地址,同时输入攻击者的电子邮件地址以发起密码重置。
  3. 捕获密码重置请求: 使用代理工具(如Burp Suite或OWASP ZAP)拦截提交密码重置请求时的HTTP请求。
  4. 分析泄露信息:
    • 端点: /orchestrator/v1/password_reset/start
    • 需要从此特定端点获取JWT令牌。有两个同名的端点:一个在响应中不包含JWT令牌,另一个包含JWT令牌(攻击所必需)。
    • 确保目标端点是在密码重置过程中提供JWT令牌的正确端点。来自任何其他端点的受害者JWT令牌均无效。
    • 下载Burp Suite的JSON Web Token工具,该工具将以绿色高亮显示包含JWT令牌的请求,帮助轻松识别正确端点。
    • 仅上述端点有效且可用于获取攻击所需的JWT。此端点可能不会在第一次尝试时出现,可能需要重复过程。
  5. 输入一次性密码(OTP): 输入发送到攻击者电子邮件或手机的一次性密码以继续进行密码重置(针对攻击者账户)。
  6. 修改HTTP请求: 在发送密码重置请求之前,将HTTP请求中的会话数据替换为受害者的会话数据:
    • AMP_d0cf3ed24cJWT的值替换为从泄露请求中获取的受害者值。
  7. 发送修改后的请求
  8. 访问受害者账户: 如果成功,您将能够在无需受害者任何交互的情况下重置受害者密码,并使用受害者电子邮件地址和新设置的密码登录。

POC视频:

  • poc1(0account_take_over).mp4 (71.33 MiB)
  • poc2(0account_take_over).mp4 (6.05 MiB)

影响

摘要: 该漏洞允许攻击者在无需用户交互或特殊权限的情况下重置受害者账户密码。通过拦截密码重置请求并用受害者会话数据进行修改,攻击者可以成功接管账户。此外,该网站允许资金转账,攻击者利用此漏洞可能从受害者账户窃取资金。

要求:

  • 访问受害者的密码重置请求:通过Burp Suite或OWASP ZAP等工具拦截。
  • 了解受害者的会话信息:包括拦截请求中可用的令牌,如AMP_d0cf3ed24cJWT
  • 访问攻击者自己的一次性密码(OTP):攻击者需要自己的OTP进行密码重置。
  • 能够修改HTTP请求:攻击者需要能够将自己的会话数据替换为受害者会话数据以执行攻击。

获得的权限:

  • 完全账户控制:攻击者可以重置受害者密码并登录账户,无需受害者凭据。
  • 访问机密数据:攻击者可以访问受害者账户中的敏感信息,包括个人详细信息、电子邮件和其他私人数据。
  • 操纵账户设置:攻击者可以修改账户设置、更改与账户关联的电子邮件地址或执行通常需要用户同意的其他操作。
  • 可能锁定受害者:攻击者可以更改密码并阻止受害者访问自己的账户,导致潜在的服务拒绝。
  • 窃取资金:由于网站允许资金转账,攻击者可以将受损账户中的所有资金转移到自己的账户, effectively窃取受害者的资金。

附加说明

攻击中泄露JWT的请求仅在网站在密码恢复过程中要求CAPTCHA时触发。有一种方法可以强制网站在密码恢复过程中请求CAPTCHA:

  1. 在密码恢复功能中输入电子邮件地址(受害者账户)。
  2. 这将触发以下请求:POST /orchestrator/v1/mfa/start
  3. 在此请求中,有一个CAPTCHA令牌。删除大部分CAPTCHA令牌值。
  4. 通过这样做,您将强制网站显示CAPTCHA,并且必须正确解决。
  5. 再次发送请求。
  6. 您将收到来自此端点的新请求:POST /orchestrator/v1/mfa/start
  7. 但是,这次请求包括攻击所需的state_token
  8. 完成上述重现步骤,您将能够接管网站上的任何用户账户。

POC视频: poc3(aount_take_over).mp4 (44.80 MiB)

漏洞修复与重测

漏洞已被修复。重测时,JWT令牌不再允许更改受害者账户密码,仅允许更改攻击者自己的密码,符合预期行为。

重测视频: retest.mp4 (33.27 MiB)

时间线

  • 2024年11月10日: 漏洞报告提交。
  • 2024年11月14日: 漏洞确认并分类为严重。
  • 2024年11月15日: 重测完成,漏洞已修复。
  • 2024年12月23日: 奖励发放。

奖励金额: 隐藏
CVE ID: 无
弱点: improper Access Control - Generic

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