如何利用2FA实现无密码控制他人帐户(影响Google, Microsoft, Instagram, Cloudflare)

iso60001  719天前

大家好,这篇文章我将描述一个通过滥用2FA(双因素验证)实现无密码登录的漏洞,涉及Google, Microsoft, Instagram, Cloudflare等国际公司。

这是最初我在谷歌发现的一个逻辑漏洞,然后在其他顶级国际公司(如微软、Instagram、CloudFlare等)的网站上也进行了测试,确定它们也受到该漏洞影响。

1)初始

这一切都是从我脑海中某个想法开始的:2FA往往比其他登录验证流程更加复杂,变动频率更高,因为它很可能在不同的时间由不同的团队实现的(在某些情况下,相隔可能几年)。

而任何涉及多个团队的项目都会存在沟通障碍,团队之间往往不可能完美配合,这就有可能产生漏洞。

那么……如果在登录过程中尝试更改密码,会发生什么情况?具体来说就是在2FA验证过程中更改帐户密码会发生什么事?

22.png

从上图可以看出,我在谷歌的2FA验证最后一步停下来,然后另外打开窗口更改了登录密码,再等待了10-15分钟,输入2FA代码,点击下一步。

哦!这种情况下居然登录成功!

发现了这个漏洞后,我立刻把它报告给谷歌。在交换一些意见后,他们认可了这个漏洞,并告诉我其实2FA的session会在20分钟后失效,并表示:

“如果你能找到一种方法让这次攻击在两个小时以后仍然成功,请通知我们。因为这可能是另一个大漏洞。”

2)第二轮

经过几个星期的缓慢测试,我终于发现了一种解决session过期的手段(一开始我认为这其实也没啥用):如果你在2FA的验证码输入页面选择“尝试另一种方法”,并且选择其他2FA方法,那么你的session过期时间就会回到20分钟。经过脚本测试,在等待了2个多小时后,验证页码的session仍然有效。

33.png

但这还不是我唯一的发现。当我在探索有哪些设置会影响session的过期时间时,一不小心把2FA功能给关闭了,此时我往2FA验证码输入页面再次输入了验证码,并点击了确定。此时,2FA功能已关,页面应该会返回一个错误响应吧?但是我发现,在我点击了Next后,我成功登录了帐户!

这个发现可比上一个厉害太多!!!这改变了一切,可以应用的攻击场景也大大增加。

这意味着,如果攻击者劫持了一个帐户(例如利用每天都会发生数据泄漏),再结合此漏洞,可对受害者帐户进行长期控制:

  1. 攻击者先启用受害者帐户中的2FA。

  2. 在另一个浏览器中,攻击者进入2FA验证码输入页面无限期停留。

  3. 攻击者禁用2FA。

  4. 受害者重新获得对帐户的访问权(通过更改密码,重置session等手段)

  5. 最后,即使受害者更改了帐户密码,攻击者仍然可以通过输入一个有效的2FA验证码再次控制该帐户,而且此时攻击者完全不知道帐户密码。

我很快把这个新漏洞发送到谷歌,并最终得到了确认:

44.png

几周后,谷歌安全专家给了我一笔丰厚的奖金。

3)其他公司?

领到赏金几天后,我想,“谷歌都有这样的漏洞,那其他公司呢?”'.

于是我分别对其他国际公司(Facebook、Github、LinkedIn)进行了测试,暂时未发现这个漏洞,这些公司2FA验证码输入页面的session一段时间后一定会过期。

但是,我在Instagram复现成功!不幸的是,他们将其称为“理论上存在的攻击”。微软也存在这个问题,但一直没修复(稍后将详细介绍)。

经过一些尝试,我最终到Hackerone和Bugcrowd上寻找目标,发现许多公司都存在这种漏洞(Cloudflare、Algolia、一些私有应用等)。在我报告后它们也都修复了漏洞,并给了我奖金。

4)不修复

最后,我想提两个大型公司,它们认为这个漏洞“不现实”:微软和Instagram。

4.1)微软

微软作为全球最好的公司之一,也发布了它们的漏洞悬赏计划(最高10万奖金),自然而然,我也检查了他们的登录域名login.live.com,最后发现了一模一样的漏洞!

但可悲的是,我的漏洞报告似乎没有受到重视,最终以“理论上可能”结束了流程。

过了一段时间,我通过LinkedIn与微软安全部门的人进行联系,希望他们重新审查这个漏洞,并给他们发送了关于这个漏洞的博客文章和2个PoC视频。

而他们的回答是:“如果你在帐户注销24小时后仍能攻击成功,我们可能就会认可。”我于是又发送了一个PoC视频,但他们仍然不接受这个漏洞。

当我问到是否可以公开这些信息时,他们同意了。

这一切开始于2017年6月,截止到今天,这个漏洞仍存在微软的登录页面中。

4.2)Instagram

我在Instagram中确认漏洞存在的第一时间,就制作了一份详细的报告发送它们的安全部门。

但是,他们似乎也不太重视:

“这类[攻击]似乎不太可能经常发生,这更像是一种理论攻击。而且攻击者也窃取不到用户密码。”

这种攻击的成功概率是不高,但是,基于Instagram的用户数量,很有可能会有受害者。

几个月后,我再次报告了这个漏洞,他们却告诉我,我不是第一个报告这个漏洞的人。所以,即使有一天他们认可了这个漏洞,我也得不到奖金。

本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场
来源:https://medium.com/@lukeberner/how-i-abused-2fa-to-maintain-persistence-after-a-password-change-google-microsoft-instagram-7e3f455b71a1

最新评论

fekw  :  这漏洞在国内肯定不收
712天前 回复
roy  :  这不能叫漏洞,这是逻辑漏洞,安全都是防门外的,你都进去了不算。
424天前 回复
昵称
邮箱
提交评论