聚焦源代码安全,网罗国内外最新资讯!

编译:奇安信代码卫士团队

本文详述了作者如何在微软在线服务中找到可使任何人在无需用户同意的情况下接管任意微软账户。微软安全团队修复该漏洞并通过身份漏洞奖励计划颁发5万美元的赏金。

发现 Instagram 账户接管漏洞后,我开始搜索其它服务中的类似漏洞。结果发现微软使用类似技术重置用户密码,于是我决定测试是否存在速率限制漏洞。

重置微软账户密码时,我们需要在“忘记密码”页面输入自己的邮件地址或电话号码,之后需要选择邮件或电话号码以接收安全码。

收到7位数的安全码后,必须输入以重置密码。如果我们可以暴力破解整个7位数安全码的所有组合(即10的7次方),那么就可以在无需权限的情况下重置任意用户密码。但,显然存在速率限制阻止我们做出如此大规模的尝试。

拦截代码验证端点的 HTTP POST 请求如下:

如上截图,我们所输入的安全码 1234567 并未出现在请求中。它是加密的之后被发送以进行验证。我猜测微软这样做是为了阻止自动化暴力破解工具利用系统。因此,我们无法使用 Burp Intruder 等工具自动化测试多个安全码。

之后不久,我发现了这种加密技术并自动化从加密安全码到发送多个并发请求的整个流程。

初次测试证明了速率限制的存在。在所发送的1000个安全码中,只有122个获得通过,其它都被限制且显示1211出错代码,并且如果我们继续发送请求,则会被阻止发送其它尝试。

接着,我尝试发送同步/并发请求,从而能够发送大量请求而不会被拦截,但我仍然无法在注入7位数安全码的同时获得成功响应。我原以为微软做出了一些控制阻止这类攻击。尽管在发送正确安全码时收到出错信息,但仍然未出现我们在初次测试时遇到的用户遭拦截的情况。所以,我还是寄望于可能会发生点什么。

几天后,我意识到,如果我们同时发出的所有请求未到达服务器,那么IP地址就会被列入黑名单,即使请求之间的几毫秒间隔也可使服务器检测到攻击并拦截。之后我修改了安全码以应对这种场景并进行再次测试。

令人惊讶的是,成功了!这次我可以得到成功的响应了。

我发送了大约1000个7位数安全码,其中包含一个正确的安全码,并能够进行下一步修改密码的操作。

如上流程仅对未启用双因素认证机制的用户有效。如果用户启用了双因素认证,那么我们还必须绕过该机制才能修改密码。

我测试了启用了双因素认证的账户,发现均受此类攻击。刚开始,用户得到提示,需要输入由验证 app 生成的6位数安全码,之后被要求输入邮件或手机收到的7位数安全码。接着即可修改密码。

一言以蔽之,攻击者必须发送6位数和7位数安全码的所有可能组合即大概1100万个请求尝试,且必须并发才能修改任意微软账户(包括启用双因素认证的账户)的密码。

发送规模如此庞大的并发请求并非易事,需要很多计算资源以及数千个 IP 地址才能成功执行该攻击。

我立即记录了所有的绕过视频,并连同详细复现步骤发送给微软。微软快速证实了漏洞存在。该漏洞于2020年11月修复,但几经沟通该漏洞的严重程度才终于被合理地定位为“提权(涉及多因素认证绕过)”漏洞。鉴于该漏洞的复杂性,该漏洞被评级为“重要”而非“严重”。

2021年2月9日,我收到了微软颁发的5万美元赏金 ✌

推荐阅读

我俩也组了个队,找到一个苹果RCE 0day,获 $5 万奖金

KindleDrip:从邮件地址到信用卡盗刷的严重漏洞,值$1.8万奖金

SolarLeaks 出售微软思科等公司源代码等数据,打包价$100万

原文链接

https://thezerohack.com/how-i-might-have-hacked-any-microsoft-account

题图:Pixabay License

本文由奇安信代码卫士编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

奇安信代码卫士 (codesafe)

国内首个专注于软件开发安全的

产品线。

 觉得不错,就点个 “在看” 或 "赞” 吧~

接管任意微软账户并获$5万赏金的故事相关推荐

  1. 通过开放重定向接管 GitHub Gist 账户,获奖$1万(GitHub $6.1万奖金系列之三)

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 在上篇文章中,我们探讨了针对每种形式的 CSRF 令牌的绕过,当时我在研究可用于生成 url 的每种方法,试图找到可用于创建所需令牌的 ...

  2. 如何删除微软账户下的历史头像,及恢复默认头像

    每次修改微软头像时,总会保存历史头像,就像这样 如何删除? 打开此电脑,并在文件资源管理器中输入%appdata%\Microsoft\Windows\AccountPictures Enter后弹出 ...

  3. win10进不了微软服务器,Microsoft帐户无法登录怎么办 Win10微软账户登录不上解决方法...

    今天想要改用Microsoft账户登录,但是无法登录上去,一直转圈并提示请稍等...,最后还提示发生了错误,"请重试,或选择"取消"以后再设置设备",反复测试了 ...

  4. win10中微软账户中文名称修改后本地用户文件夹仍为中文名

    引用自: http://www.cnblogs.com/XiHongYan/p/6271056.html 第一篇博文 问题重述 第一次使用win10时,注册了微软账户,用微软账户登录,并且当时注册账号 ...

  5. 微软工程院院长:1万多应聘者挑不出100人

    微软工程院院长:1万多应聘者挑不出100人 "过去两三个月,我最主要的精力都花在了雇人上.遗憾的是,1万多名应聘者中,居然招不到足够合适的人."今天,在北京中关村希格玛大厦微软亚洲 ...

  6. vs2015professional过期后登录微软账户仍然不能使用的解决方法

    vs2015professional过期后登录微软账户仍然不能使用的解决方法 参考文章: (1)vs2015professional过期后登录微软账户仍然不能使用的解决方法 (2)https://ww ...

  7. 解决win10新装系统无法登录微软账户及microsoft store

    windows 10 微软账号登陆错误 代码0x80190001 问题表现: 1.无法登入微软账户且提示"出现错误,请重试."  2.microsoft store无法加载页面 解 ...

  8. Windows 11 首次开机OOBE阶段跳过连接网络及登录微软账户,使用本地账号登录的方法

    2022/11/25更新: 以下方法最新版本的Win11 22H1上已失效,最新的方法是在第二步呼出cmd窗口,输入oobe\bypassnro,电脑会重启,再次来到连接网络的页面时选择"我 ...

  9. wp10手机不能连接微软服务器,WP10手机微软账户登陆不了该怎么办?

    用了一段时间发现WP10预览版不是特别的完善,但是给我的感觉很人性化,除了个别的问题,使用起来的感觉还是很好的.有些手机更新过后无法登陆微软账户,我尝试了多种方法换网换地方等,都不好用,在这里我以安装 ...

最新文章

  1. 让网管暴寒的网络故障(一笑了之)
  2. python基础学习(二)注释和算术运算符
  3. Bit-Z召开全球生态联盟暨韩国战略发布会 将成立BZ资本
  4. 写python笔记本推荐_写个python程序帮你清理垃圾
  5. 方法不对,啥都学不会!90%的Python工程师都输在这点上!
  6. 2021-09-07客户端向 NameNode 请求创建文件,NameNode 根据元数据信息计算出文件的元数 据信息
  7. python网易云_使用Python实现下载网易云音乐的高清MV
  8. 如何更快通过BSCI审核
  9. 高音质无线蓝牙耳机推荐,2020游戏低延迟蓝牙耳机分享
  10. 利用DHT网络原理制作bt采集蜘蛛
  11. 「猪齿鱼」助力汉得信息智能制造集中交付高效协同
  12. Starbound正式版的Mod制作(三)简…
  13. TYUT太原理工大学2022需求工程考试选择题背诵版
  14. java字母排序_Java实现按照大小写字母顺序排序的方法
  15. 人脸活体检测:活体检测数据集
  16. chmod的使用 czy:czy 文件名
  17. 蓝海卓越云AC功能简介
  18. 19.制作自动切换滚动的图片轮播
  19. 哈工大计算机系统大作业——hello P2P
  20. MySQL 中你应该使用什么数据类型表示时间?

热门文章

  1. 深入理解Java Proxy机制
  2. 一些常见的项目行为状态[转]
  3. Android 利用属ObjectAnimator,AnimatorSet性动画绘制一个弹球,加速下落,到底部时挤压,然后减速上弹...
  4. 基于nagios网络监控平台的实现--具体事例
  5. 开源 免费 java CMS - FreeCMS-数据对象-answer
  6. db2审计功能db2audit导致的数据库宕机问题处理
  7. lLinux系统安全sudo+pam
  8. [译] Scala 类型的类型(一)
  9. js判断时间跨度,以月数为单位
  10. GCC编译静态库和动态库