本
文
摘
要
翻译文章,原文:OTP Bypass on India’s Biggest Video Sharing Site.[1]
通过我们的组织,我们已经在一些私人项目上工作了几个月。因此,我决定稍事休息,并在公共平台上寻找bug来提高我的技能。
后来,我找到了一个社交媒体网站,该网站允许用户共享类似于TikTok的视频,它拥有超过5000万活跃用户,因此我决定不向公众公开。
深入探讨
我通过收集有关目标网站的一些信息来发起攻击,把该网站命名为example.com, 我注册一个账户为了找控制面板,但我没有找到,所以在这就停止了,我还是喜欢寻找XSS。
等一下, 让我们尝试一下登录页面。
Login Page (Modified for Security Reasons !)
登录页面上有使用电话号码登录的方法,这使我可以输入手机号码并输入收到的4位数OTP。我决定使用BurpSuite的intruder来暴力绿色OTP。
Request sent to Vulnerable Site with Incorrect OTP
我重复请求,10次之后就被阻止了。
Intruder Attack used for OTP bruteforce
我决定不放弃OTP绕过,让我再试一次,我去创建帐户,再次尝试暴力枚举OTP,但仍然失败。
图1
因此,我用新的手机号码创建一个用户,并输入了我收到的正确的OTP。通过使用Do Intercept响应,我开始分析响应,令我惊讶的是,响应非常简单,如下所示。
Response for Valid OTP
{“data”:{“det”:{},”blocks”:[]},”gsc”:”700"}坦率地说,我不知道这是什么意思。但是我发现如果用户输入有效的OTP,此代码段将用于获取用户详细信息。
现在,我决定使用无效的OTP分析响应。
Response for Invalid OTP
{“gsc”:”615",”message”:”Invalid verification code”}现在,我发现这是用于验证OTP的唯一代码段。为了使这项工作,我需要证明这确实有效。因此,我决定使用朋友的手机号进行注册,并输入了错误的OTP,我所做的就是删除无效的验证代码段,并通过截取响应将其替换为有效的代码段。(注:把无效的返回结果替换为有效的结果)
PoC
即使没有有效的OTP,我也可以使用朋友的手机号码创建帐户,这清楚地表明,我无需验证OTP就可以使用任何手机号码创建帐户。
总结
研究人员总是绿色OTP字段,但他们忘记分析发送到浏览器的响应。
备注
这篇文章很简单,这种情况的网站在赏金平台其实真不多见,说白了就是没有在服务器端二次确认OTP和对应的手机号码而造成的。
References
[1] OTP Bypass on India’s Biggest Video Sharing Site.: https://medium.com/@sriram_offcl/otp-bypass-on-indias-biggest-video-sharing-site-e94587c1aa89