今天分享的这篇Writeup是作者在参与漏洞众测中,针对目标系统的动态口令OTP (One Time Password),通过利用简单的暴力枚举方法,实现了对目标系统双因素验证机制2FA (Two-Factor Authentication)的绕过或破解。目标系统是印度最大的旅行服务公司网站,其采用了动态口令OTP作为双因素验证2FA的实现手段。

通常来说,OTP是从0000到9999的4位数组合,假如OTP有一万种可能性的组合,在如今强大的计算机时代,处理10000种组合也只需几分钟的时间。所以,如果OTP的验证机制不当,任何人都可以通过简单的暴力枚举来绕过它。

为什么我可以绕过2FA?

目标系统对不成功的请求尝试不作速率限制

目标系统对不成功的请求尝试没有新的动态口令措施

前提准备:

Web浏览器、BurpSuite。

绕过2FA的复现过程

绕过2FA的复现过程

1、开启BurpSuite,使用手机号码登录目标系统网站,这里,故意输错系统发送到你手机中的动态OTP(这里我们随便输入1234),然后用BurpSuite捕获流量;

从BurpSuite中我们可以看到OTP API的相关信息 – verifyOTP?otp=:

2、把这次OTP的发送过程右键 Send to intruder:

3、选择otp=1234占位符,并把它设置为简单暴力枚举变量方式:

4、选择Payload标签项,把其修改为任意形式的组合,然后点击attack:

5、攻击开始。从枚举响应结果中,我们可以看到一个长度为2250的异常响应,不出意外,就是它了:

6、 用该OTP配合登录,可以成功有效!

*参考来源:medium,clouds 编译整理,转自 FreeBuf