0x01:验证码暴力破解测试
验证码机制主要被用于防止暴力破解、防止DDOS攻击、识别用户身份等,常见的验证码主要有图片验证码、邮件验证码、短信验证码、滑动验证码和语音验证码。
以短信验证码为例。短信验证码大部分情况下是由4~6位数字组成,如果没有对验证码的失效时间和尝试失败的次数做限制,攻击者就可以通过尝试这个区间内的所有数字来进行暴力破解攻击。
测试方法:
攻击者填写任意手机号码进行注册,服务器向攻击者填写的手机号码发送短信验证码,攻击者设置验证码范围000000-999999、
00000-99999、0000-9999,对验证码进行暴力破解,通过返回数据包判断是否破解成功,然后通过破解成功的验证码完成注册。
修复建议:
a.设置验证码的失效时间,建议为180秒;
b.限制单位时间内验证码的失败尝试次数,如五分钟内连续失败5次即锁定该账号15分钟。
0x02:验证码重复使用测试
在网站的登录或评论等页面,如果验证码认证成功后没有将session及时清空,将会导致验证码首次认证之后可重复使用。
测试时可以抓取携带验证码的数据包重复提交,查看是否提交成功。
测试方法:
修复建议:
针对验证认证次数问题,建议验证码在一次认证成功后,服务端清空认证成功的session,这样
就可以有效防止验证码一次认证反复使用的问题。
0x03:验证码客户端回显测试
当验证码在客户端生成而非服务器生成时,就会造成此类问题。当客户端需要和服务器进行交互发送验证码时,可借助浏览器的工具查看客户端与服务器进行交互的详细信息。
测试方法:
攻击者进入找回密码页面,输入手机号与证件号,获取验证码,服务器会向手机发送验证码,
通过浏览器工具查看返回包信息,如果返回包中包含验证码,证明存在此类问题。
修复建议:
1、禁止验证码本地客户端生成,应采用服务器验证码生成机制;
2、设置验证码的时效性,如180秒过期;
3、验证码应随机生成,且使用一次即失效。
0x04:验证码绕过测试
通过修改前端提交服务器返回的数据,可以实现绕过验证码,执行我们的请求。
测试方法:攻击者进入注册账户页面,输入任意手机号码,获取验证码,在注册账号页面填写
任意验证码,提交请求并抓包,使用抓包工具查看并修改返回包信息,转发返回数据包,查看是
否注册成功。
修复建议:建议在服务端增加验证码的认证机制,对客户端提交的验证码进行二次校验。
0x05:验证码自动识别测试
出自来自web攻防之业务安全