今天分享的这篇 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 配合登录, 可以成功有效!
来源: http://www.tuicool.com/articles/2UNzUzy