请遵守法律法规,文章仅供安全防范与学习,严禁非法使用,后果自负。
0x01 测评验证码测评
0x02 测试内容通过拦截调用验证码处相关数据包,如登录功能、密码找回、留言提交等处,测试验证码是否有效,是否可以进行绕过或重复利用。
0x03 漏洞原理验证码是什么 验证码是一种区分用户是计算机还是人的公共自动程序。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答验证码的问题,所以回答出问题的用户就可以被认为是人类。
验证码有中文字、纯数字、英文字母、点击字符串、图片图形、数学运算等等。
验证码的作用
- • 进行人机校验;
- • 验证使用者身份,判断当前账户使用者是否是账户的拥有者;
- • 防止恶意的IP频繁访问;
- • 防止恶意操作导致用户本身受损失;
- • 防止暴力破解;
- • 防止恶意灌水;
- • 防止刷票;
验证码分类 常见的验证码有:短信验证码、语音验证码、图文验证码、数字验证码等等。形式多样核心内容一致,根据形式的不同就有了分门别类的应用。具体可看之前写的文章《渗透遇见验证码,跑路?or 拿下它?》。
根据作用可分为以下两种:
- • 区分用户是计算机还是人的公共全自动程序,比如Google登录时的验证码、12306图片识别的点击式验证码等。
- • 识别身份的验证码,用于识别用户是否为账号的所有者,比如短信验证码、邮箱验证码、电话验证码等。
验证码大致可通过以下两种思路进行绕过
- 1. 识别法:脚本 深度学习、神经网络的知识;
- 2. 逻辑绕过,开发人员写验证码校验代码时产生逻辑错误。
应用登录功能未设置验证码校验机制,且无登录失败次数过多锁定策略,这种情况下可直接尝试进行暴力破解。
验证码为空值有验证码机制,但是在请求包中将验证码参数删除,服务器端就不进行验证码校验,会直接校验账户、密码;或者虽然页面中显示有验证码机制,但在不填写验证码直接输入用户名、密码的情况下,可直接登录,存在爆破风险。
万能验证码0000、1111、8888、000000、123456等,一般多出现于设备、硬件设备。
验证码藏于Cookie中一般情况下系统会将验证码的值用Session存储起来,再通过对比用户提交的验证码和Session中的验证,就可以知道用户输入的是否正确. 但由于Session 会占用服务器资源,有些程序员会将验证码的值加密后存储在Cookie中。针对这种情况,攻击者可以通过抓取登录数据包,分析包中的Cookie字段,查看其中有没有相匹配的验证码或者是经过简单加密后的验证码。
验证码隐藏于源码中记住验证码,打开网站源码,用Ctrl F搜索,如果搜索到刚才输入的验证码,就说明验证码被隐藏于源码中,接下来就可以使用工具提取源码中的验证码并将其放入每次的请求包中,对用户名、密码进行破解。
前端校验验证码前端对验证码进行校验,相当于没有设置验证码,可通过抓包查看是否有验证码传参,或禁用JS进行绕过。