扫码领资料
获网安教程
前言
在此,笔者将展示一个有趣的漏洞挖掘过程,我能够接管应用程序的任何用户帐户,甚至是管理员/员工帐户。
正文
笔者将目标网站称为redacted.com,现在该网站使用电话号码供用户登录,经过观察,我发现有些电话号码如9999999999、8888888888、7777777777 …………1111111111 等,不需要实际身份验证,我可以使用其他 OTP 号码登录(如我的号码),它们却需要身份验证。
注:OTP (One Time Password,简称OTP),一次性口令,例如登录某些网站时需要输入手机验证码,这个验证码也可以理解为OTP的一种。
但为何上述电话号码没有经过实际认证呢?
其背后的原因是,在部署到实际生产环境之前,开发人员有时会使用一些默认电话号码,如 999999999、8888888888……来立即访问应用程序并测试内部功能,而无需任何实际身份验证,在这种情况下,不需要正确的 OTP 来访问应用程序。
现在,每当将应用程序部署到生产环境时,开发人员就有责任禁用此功能(删除系统内部默认账号、测试账号等),因为这些帐户仍然包含一些开发人员或员工信息,如地址、电子邮件、银行详细信息和更多元信息。
但有时开发人员忘记更改功能,外部人员可以登录这些默认电话号码。
现在,我想报告这个问题,但我此时还没有报告,我想如果我使用此功能进入其他用户的帐户会怎样。
继续漏洞挖掘,扩展战果
现在我开始通过burp分析请求和响应、它们的参数和令牌。
其中注册功能的 POST 请求如下图所示,
现在您可以观察到有很多参数,其中传递了给定的电话号码,并且可以尝试测试上面提到的电话号码的任何 OTP 值。
现在,我测试了所有三个参数mobileNo、uid 和 socialMediaId,将它们替换为其他用户的电话号码,然后分析响应包。
最终发现uid参数存在漏洞,下图是我如何查看用户信息然后登录其帐户的示例:
通过响应包中的JSON 参数 isExistingUser和Login Successful可以确认对方帐户的是否存在以及进行接管,如此我就可以通过知道他们的电话号码登录任何帐户,
Tips: 您可以通过侦察(如谷歌、GitHub dorks(github语法)、LinkedIn、联系页面)获取大量电话号码,然后测试漏洞。
由于注册端点没有速率限制,因此影响更大:
由于没有速率限制,我甚至可以爆破电话号码并通过响应 JSON 参数 isExistingUser = true(确认现有用户是否存在) 过滤结果,这样我就可以接管该网站上的 任何普通用户/员工/管理员帐户。
最后我向相关组织提交了该漏洞,并收到了漏洞赏金
以上内容由白帽子左一翻译并整理。原文:https://infosecwriteups.com/massive-users-account-takeovers-chaining-vulnerabilities-to-idor-ea4e1b6407d2
声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。
原文始发于微信公众号(白帽子左一):利用IDOR漏洞实现大规模用户接管
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论