SingleStore双重认证绕过漏洞分析

本文详细分析了SingleStore身份验证服务中的2FA绕过漏洞,攻击者可通过暴力破解手段完全绕过双重认证机制,仅需知道受害者的邮箱和密码即可入侵账户。漏洞涉及认证流程设计和实现缺陷。

SingleStore双重认证绕过漏洞分析

漏洞概述

攻击者仅需知道受害者的账户邮箱地址和密码,即可完全绕过双重认证(2FA)机制,成功入侵受害者账户。

复现步骤

第一步:登录尝试

https://portal.singlestore.com/ 输入受害者的账户邮箱地址和密码,点击登录。

第二步:拦截请求

  • 进行虚假的2FA代码尝试
  • 在Burp中拦截请求但不发送,保持拦截状态开启

第三步:暴力破解攻击

  • 将捕获的请求发送到Intruder工具
  • 勾选mfaToken参数旁边的代码
  • 设置Payload类型为Number
  • 如果发送到邮箱的2FA代码是156289,则输入155900到1556300之间的值(避免暴力破解耗时过长)
  • 点击开始攻击按钮

第四步:观察响应

  • 攻击结束时观察状态码从303变为302
  • 由于2FA机制实现存在缺陷,第3次错误尝试后,HTTP状态码从200变为302,返回登录流程开始
  • 但仍可通过Burp继续尝试请求
  • 当进行正确的2FA尝试时(包括后续尝试),状态码切换为302,浏览器中成功登录账户

CVSS评分

CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N/CR:H/IR:H/AR:H

影响

此漏洞使得攻击者能够完全绕过为保护受害者登录账户而开发的2FA机制。

技术细节

攻击原理

  • 输入2FA代码时,前3个请求返回200 HTTP状态码(代码错误)
  • 如果在前3次尝试中输入正确代码,将在输入正确代码的请求中收到302 HTTP状态码
  • 攻击者在浏览器中输入3次错误代码后,第3次尝试会以303 HTTP状态码返回登录流程开始
  • 但在Burp中捕获2FA代码后,每个错误尝试仍会收到303,而第一次正确尝试及所有后续尝试都会收到302

确定正确代码

  • 需要查看收到的第一个302请求
  • 在PoC.webm中,第142个请求收到第一个302状态码,找到正确的2FA代码
  • 攻击者无需知道正确的2FA代码,在收到第一个302 HTTP状态码请求后(即在后台输入正确2FA代码后),刷新2FA代码输入页面即可登录账户

补充测试

攻击限制

  • 如果在尝试进入账户时关闭’intercept on’,攻击中的后续请求返回500 HTTP状态码
  • 即使尝试正确代码,收到500 HTTP状态码响应时也无法成功进入账户

无限制攻击

  • 在攻击期间保持’intercept on’开启,不会出现错误
  • 无速率限制或WAF防护,可无限次尝试2FA代码
  • 可通过暴力破解绕过2FA机制登录账户

扩展影响

同样的漏洞也存在于基于身份验证应用程序的2FA机制中:

  • 正确代码每30秒更改一次
  • 攻击者能够无限制尝试代码,增加了攻击成功率

修复状态

该漏洞已被修复:

  • 3次错误登录尝试后,服务器不再接受有效请求
  • 显示警告"could not load auth request by id"
  • 重测确认漏洞已无法复现
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计