【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的

admin 2021年4月30日09:14:08评论67 views字数 1554阅读5分10秒阅读模式
【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的点击上方蓝字关注我们


概述


本文描述了研究人员是如何发现微软在线服务上存在的一个漏洞,该漏洞可能允许任何人未经许可就可以接管任意微软帐户。微软安全团队已针对该漏洞进行了修复,并向研究人员颁发了5万美元的漏洞赏金。

研究人员在发现Instagram上的帐户劫持漏洞后,就试图在其他服务中的寻找类似漏洞。结果,研究人员发现微软重置用户密码使用的是类似的技术,因此研究人员决定对其进行渗透测试,以查看其否存在任何速率限制漏洞。


渗透测试


在对微软帐户密码进行重置时,我们需要进入“忘记密码”页面,并在页面中输入账户的电子邮件地址或电话号码,我们需要选择可接收安全码的电子邮件或手机号码。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


我们必须在页面中输入收到7位数安全码,才能对该账户密码进行重置。但如果我们可以对7位数安全码的所有组合(即10^7=1000万个代码)进行暴力破解,我们将可以在未经许可的情况下重置任意用户的密码。但是,显然为了应对这种暴力破解,微软的后端肯定存在一定的速率限制,以阻止我们进行大量的尝试。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


拦截向代码验证端点发出的HTTP POST请求,如下所示:


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


从以上屏幕截图中,我们可以看出请求中不存在我们输入的1234567安全码。意味着该安全码已被加密,然后才被发送以进行验证。我猜想开发人员这样做的目的是为了防止利用自动暴力破解工具对其系统进行攻击。因此,我们无法使用Burp Intruder之类的工具自动测试多个代码,因为它们不会执行加密操作。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


一段时间后,我想出了如何执行加密,并自动地完成从加密代码到发送多个并发请求的整个过程的方法。


我的初始测试结果,表明该端点存在速率限制,这与我们的预期相符。在发送的1000个代码中,只有122个能够成功通过,其他代码则受到1211错误代码限制。且如果我们不断发送请求,它们将阻止该帐户发送进一步的尝试。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


接下来,我尝试通过发送并发请求,以绕过速率限制,从而允许我们发送大量请求。但是当注入正确的7位数安全码时,我依然无法获得成功的响应。这意味着,开发人员可能已经采取了一些控制措施来防止此类攻击。


尽管在发送正确的安全码时出现错误,但是并没有出现我们在初始测试中遇到的阻止用户的迹象,所以我们的希望并没有完全破灭。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


几天后我意识到,如果我们发送的所有请求没有同时到达服务器,则服务器会将IP地址列入黑名单。即使请求之间的延迟间隔只有几毫秒,服务器仍可以检测到攻击并进行阻止。想通这一点后,我立即调整了代码以处理这种情况,并再次对其进行测试。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


令人惊讶的是,这次它生效了,我获得了成功的响应。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


我一共发送了约1000个左右七位数的安全码,其中包含正确安全码,使我能够成功对账户密码进行更改。


上诉过程仅对未启用双因素身份验证的用户有效,因为如果用户启用了2FA,我们必须绕过双因素身份验证代码才能更改密码。


我对一个启用了2FA的帐户进行了测试,发现其同样也容易受到此类攻击。启用2FA的账户在重置密码时,首先会被要求输入由身份验证器应用程序生成的6位数字代码,验证通过后,才会被要求输入发送到其电子邮件或电话号码中的7位数字代码。


这意味着,攻击者必须同时发送6位和7位安全码的所有可能性(约1100万次请求尝试),以更改任意微软帐户(包括启用了2FA的帐户)的密码。


要发送如此大量的并发请求并不是一件容易的事,攻击者需要需要大量的计算资源以及数千个IP地址才可能成功完成攻击。


总结


研究人员在发现该漏洞后,立即用视频记录下了所有绕过的过程,并将其连同漏洞复现的详细步骤提交给微软安全团队。该漏洞已在2020年11月被微软修复,通过这一发现,研究人员也获得了微软奖励的五万美元的漏洞赏金。


【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的

END



【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的


好文!必须在看

本文始发于微信公众号(SecTr安全团队):【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月30日09:14:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【渗透实例】我是如何发现微软任意账户劫持漏洞,并因此获得5万美元赏金的http://cn-sec.com/archives/280701.html

发表评论

匿名网友 填写信息