1.关于验证码漏洞的几种类型
1.1 前端显示
这种情况是极为少见的。验证码作为用于鉴别身份的重要方式,没有哪个开发商敢把短信验证码直接显示在前端的。既然都显示在前端那就失去了他的作用,既然这样了为什么不弄个数字图片或者图形验证码来鉴别是否为机器人呢。
遇到的一个实例,他就是把验证码直接显示在了前端
1.2 响应包显示
这种算是前端显示的另一种版本。两者区别就在于前端的可以在网页中直接看到,这种则需要手动查看获取验证码请求后返回的响应包。验证码就会在响应包中被查看到。
1.3 验证码转发
什么是验证码转发?比如你要注册一个账号需要绑定手机号,正常的逻辑是只输入一个手机号然后获取验证码。但是在这里可以尝试在第一个手机号的末尾处添加一个英文的逗号然后再填入一个手机号或者用同样的方式无限制添加手机号。
当点击获取验证码按钮后,不光第一个手机号可以收到验证码,刚刚在后面添加的其他的手机号也能接收到验证码。且每个手机号获取到的验证码内容都会一模一样。
1.4 篡改接收验证码的手机号
这种情况是验证码转发的另一种版本。两者区别在于验证码转发可以在请求前操作,这种则需要请求后操作。
举个例子,在找回密码处给账号绑定的手机号发送获取验证码的请求时拦截数据包,这时在请求包中会显示账号绑定的手机号,现在把账号绑定的手机号更换成攻击者的手机号。由于系统默认还是在找回密码中输入的账号绑定的手机号,这样就可以劫持验证码,达到重置密码的效果。
1.5 自定义验证码内容
举一个抖音海外版的例子,在TikTok的网站上,有一项功能可以让用户向自己发送SMS短信以下载该应用程序,这也就造成了TikTok可以将SMS短信发送到任何电话号码。
攻击者向受害者发送SMS消息时拦截请求。该参数中包含了受害者的手机号和下载链接
正常获取的到短信样子
当攻击者修改DOWNLOAD_URL参数后向受害者发送短信,则受害者收到的短信中的链接就会变成攻击者修改后的链接
1.6 验证码可爆破
服务端未对验证时间、次数作出限制,存在爆破的可能性。简单的系统存在可以直接爆破的可能性,但做过一些防护的系统还得进行一些绕过才能进行爆破。
对于4位纯数字验证码:从0000~9999有10000种可能,使用多线程在5分钟内跑完并不是很难。
对于6位纯数字验证码:从000000~999999有1000000种可能,单从爆破时间上来看就比4位数的多100倍。
1.7 验证码重复使用
验证码重复使用简单的说就是你使用的验证码在登陆完成后,验证码不会失去效果再次去登录时,使用该验证码任然有效。
2. 绕过发送限制造成轰炸效果
2.1 并发绕过
什么是并发?拿淘宝双11举例子,假设活动开始是9点整,由于用户在这之前购物车内的东西都准备好了就等时间一到就立马下单,那么到了9点突然一大堆用户全都点了付款按钮。简单的来说就是同一时间内大量的数据涌入这就是并发。
有的网站性能没有处理的好就会造成这种情况,并发的次数越大轰炸的次数越多。
2.2 特殊格式绕过
假如参数是这样的:mobile=13111111111,且每个手机号只能获取一次验证码。这时可以利用空格来绕过限制,在手机号的前面或者末尾每增加一个空格系统就会认为是一个新的手机号。
请求有GET和POST方式,对于GET请求方式需要把空格进行URL编码(%20),POST的请求大多数情况可以直接加空格。
除了空格还有86、086、0086、+86、0、00、/r、/n以及特殊符号等。
2.3 利用大小写绕过
前面说到了关于加空格的绕过限制,但还有一种方式可以绕过邮箱轰炸限制,那就是通过修改大小写,通过修改邮箱后面字母的大小写就可绕过限制,假如参数是这样的:Email=123@qq.com 当次数达到限制时,随便修改一个字母为大写:Email=123@Qq.com就可绕过限制。
2.4 调用接口绕过
比如这样的参数:terminal=01&mobile=13111111111,前面的接口是调用短信发送内容的接口,比如terminal参数值为01是调用注册成功的短信提示,02是调用密码重置成功的短信提示,03是调用注册成功的短信提示等等,当修改这个接口值时,也就达到了短信轰炸或邮箱轰炸的目的。
还有另一种情况就是无效验证。什么是无效验证?有的站点要求输入正确图形验证码才可以获取到信息。有的站点验证码形同虚设随便输入字符就可以通过、有的验证码可以重复使用。
还有的就是输入验证码后直接调用接口发送,以上两种情况可以直接利用成功发送验证码的数据包发送到bp的intruder模块,payload设置为空字符大批量发包
2.5 修改IP绕过
有些是验证当前IP的,如果当前IP短时间内获取短信或邮件频繁或者达到一定次数的话就会出现限制,那么就可以利用修改IP或者代理IP来进行绕过限制。
2.6 修改返回值绕过
比如发送成功后返回值是success,发送失败的返回值是error,那么当达到次数后,可以通过修改返回值为正确的返回值:success,从而绕过限制,达到发送成功的目的。
2.7 修改Cookie值绕过
有些可能不是直接验证手机号来判断次数,而是验证当前Cookie,利用当前Cookie来进行验证发送次数的话,很容易造成绕过,这里如果验证的不是登录状态的Cookie而是普通状态下的Cookie的话就可以通过修改Cookie达到绕过验证。
3. 短信和邮箱轰所引发的其他危害
3.1 爆破潜在用户
比如在注册处输入手机号或邮箱,它会判断该手机号或邮箱是否存在,如果存在返回通过并执行下一步的操作,如果不存在就返回不存在的信息提示,那么在这里可以批量进行爆破潜在的用户已经注册过的手机号或邮箱号,然后可被利用来进行撞库!
评论 (0)