逻辑漏洞——验证码篇
浅谈基于验证码的逻辑漏洞挖掘篇
一、前言:
验证码现在几乎是在任何地方都是随处可见的,不管是登录还是注册大部分均存在
二、图形验证码:
A、验证码DOS:
原理:图片的长度和宽度是我们自己可控制的,正常请求的width=130&height=50
原数据较小:
修改后:可以发现数据明显大了
备注: 所以如果我们无限制放大下去,图片的渲染绘制,面积越大绘制时间越长,返回的数据包越大,当大量僵尸网络访问这样的放大链接时,服务器就会很消耗资源!
B、验证码可绕过:
原理:直接删除验证码参数可绕过或者利用BP将数据包中的验证码
比如:code_verify=fals 就可以直接修改为 code_verify=true 即可跳过验证码的验证;
C、验证码可识别(爆破):
这里有一个例子,图形验证码过于容易辨认可以用Burp Suite导入插件进行自动识别验证码,一般识别率能达到百分之90,该验证码是用于手机短信的发送,用其可以实现短信验证码轰炸,同时也可以用于只需要图形验证码就能登录的用户密码爆破;
D、验证码可重复利用(不失效)
原理:验证码使用后为失效,像上图所示如果将数据包拦截并重放,如果还能通过,那就不需要Burp Suite导入插件识别验证码了,直接可以进行爆破或者短信轰炸。
E、验证码前端显示:
原理:进行登录等接口的时候BP抓取到的响应数据包可以看见下一次的验证码code数值,这种也蛮多的
F、URL控制code具体数值:
原理:图形验证码是后端随机生成的,可以直接通过url直接进行控制code验证码数值;
三、短信验证码:
A、短信可绕过:
原理:获取验证码随意输入验证码或者Null即可进入下一步;
B、短信前端直接显示:
原理:验证码直接在前端数据包中直接显示;
C、短信轰炸(纵向):
原理:在一个限制时间的情况下对一个手机号,发送的短信验证码条数超过发送预期,原本是每一分钟只可以发送一条结果可以无限制的发送,会造成大量资源的浪费;
D、短信轰炸(横向):
原理:在一个限制时间的情况下对多个不同手机号,发送的短信验证码条数超过发送预期,原本是每一分钟只可以发送一条结果可以无限制的发送,会造成大量资源的浪费;
E、验证码可爆破:
原理:服务器如果没有限制提交的验证码的次数以及用户名和密码等信息,那么我们可以爆破这个验证码,一般使用BP的重发器模块进行4位数验证码的爆破;
F、万能验证码:
原理:程序员在开发验证码模块时,为了方便调用验证码验证功能是否完善,故意设置了几个万能的验证码作为测试数据。在开发结束后由于程序员的疏忽,没有删除该测试验证码数据从而导致该漏洞的产生,比如:6666,0000,8888,666666,000000,888888 等;