12.2 验证码暴力破解测试
12.2.1 测试原理和方法
找回密码功能模块中通常会将用户凭证(一般为验证码)发送到用户自己才可以看到
的手机号或者邮箱中,只要用户不泄露自己的验证码就不会被攻击者利用,但是有些应用
程序在验证码发送功能模块中验证码位数及复杂性较弱,也没有对验证码做次数限制而导
致验证码可被暴力枚举并修改任意用户密码。
在测试验证码是否可以被暴力枚举时,可以先将验证码多次发送给自己的账号,观察
验证码是否有规律,如每次接收到的验证码为纯数字并且是 4 位数。
12.2.2 测试流程
验证码暴力破解是指在密码重置的过程中使用 Burp Suite 不断地尝试对验证码进行猜
解的测试。一旦验证码猜解成功即可对被攻击账号进行密码重置,如图 12-6 所示。
图 12-6 验证码发送流程
步骤一:在某 App 的找回密码功能模块中要求用户输入手机号并发送验证码,可以
先将验证码发送到自己手机号来查看验证码是否有规律,可以被暴力枚举。案例中验证码
为 4 位数,如图 12-7 所示。
图 12-7 验证码是 4 位数字
步骤二:当确定用户验证码可以暴力枚举后,可以抓取验证码校验请求,对验证码进
行暴力破解。在验证码未知的情况下,可以先填写任意 4 位数字,如图 12-8 所示。
图 12-8 抓取验证请求包
步骤三:当请求包被拦截后可以观察参数名为 mm 的请求值是用户的手机号码,参数
名为 pno 的请求值是验证码(在还不知道验证码的情况下随意填写的),参数名为 pas 的参
数值是验证码校验成功后要修改的密码,如图 12-9 所示。
图 12-9 验证码校验请求包
请求包如下:
步骤四:这里可以将请求包发送到 Burp Suite 工具中的 Intruder 模块中,并把 pno 验证
码参数设置为变量载入 4 位数字的密码字典进行枚举测试,可以通过 length 响应长度来观
察 payload 请求的验证码是否和其他请求不一样,如果发生不一样的情况可能就是真实的
验证码。如图 12-10 所示,从响应包内容可以观察出验证码枚举猜解正确并修改密码成
功。
图 12-10 验证码暴力枚举
12.2.3 修复建议
为了避免出现验证码被暴力破解的情况,建议对用户输入的验证码校验采取错误次数
限制并提高验证码的复杂度。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论