逻辑漏洞:验证码相关的逻辑漏洞
验证码可能被恶意窃取或篡改,导致安全性受到威胁;验证码可能被恶意利用,例如通过社会工程学手段诱使用户提供验证码,从而实施诈骗或盗取个人信息;验证码的生成算法可能存在弱点,被攻击者破解从而生成有效验证码;验证码的有效期设置不当或者重复使用,也可能被攻击者利用。综上所述,验证码相关的逻辑漏洞可能会给用户带来安全风险,因此在设计和使用验证码时应当注意以上问题,加强安全性措施以保护用户信息安全。
目录
前几天学习了水平越权、垂直越权、支付逻辑漏洞、cookie脆弱性性导致的逻辑漏洞、response状态码修改导致的逻辑漏洞和token值回显的逻辑漏洞
今天要学习的是验证码相关的逻辑漏洞,据我所知,验证码相关的逻辑漏洞,也算是逻辑漏洞中比较常见的了,因为它的使用场景很多,注册,登录,找回密码等都需要使用验证码,那么在本篇我还是会通过别的大佬总结好的文章来进行验证码相关的逻辑漏洞的学习+练习
1、无效验证码
什么是无效验证码呢?
在验证码模块中,验证模块与业务功能没有进行关联性,这就叫做无效验证,一般在新上线的系统中比较常见
我们在输入手机号,然后点击获取短信验证码后,随意输入验证码,直接输入两次密码,就可成功更改用户得密码,就是因为没有对验证码的正确性进行验证导致的
2、任意用户注册
我们首先利用自己的手机号接收验证码进行验证,下一步跳转一个设定密码的页面,接下来抓包,篡改手机号码,使用任意手机号进行注册
3、客户端验证/回显绕过
客户端验证是不安全的,和上面的逻辑漏洞一样,可能会导致任意账号的注册,登陆以及重置任意用户等一系列的问题,有的时候会直接在前端显示验证码的明文信息
pikachu靶场客户端验证绕过演示
pikachu靶场下载链接:https://github.com/zhuifengshaonianhanlu/pikachu
打开靶场后,来到暴力破解这里,然后点击验证码绕过(on client)
可以看到时一个登录框,并且有验证码,那么就来在登录的时候尝试抓包看看:
这个先输入的是正确的验证码,然后发送到重放模块中进行重放
可以看到时登录成功的,那么下面我尝试更改了一下验证码再进行发送:
可以看到还是显示登录成功,这说明验证码只是在前端进行了检查,后端没有进行检查,这样的验证码就失去了它存在的意义了
phpyun系统客户端回显绕过演示
下载地址:php云人才系统3.2提取码:qc8y
安装完成后,注册了一个用户test123/test123
然后来到个人资料这里绑定手机号:
这里尝试绑定手机号,在绑定的同时进行抓包:
抓包,发现第一个包没有验证码的值
然后放包后,重新点击了发送验证码发现第二次有验证码:
然后我们就可以成功使用该验证码绑定了手机号,点击保存
然后这里将新的验证码进行:
修改后放包:
可以看到已经成功的利用验证码回显逻辑漏洞绑定了手机号了
4、验证码可爆破
短信验证码一般由4位后者6位数字组成(还有特殊情况,字母数字组合等等),若服务器未对验证时间,次数进行限制,则存在爆破的可能;
输入手机号获取验证码,输入任意验证码,抓包放到Intruder模块,将短信验证码字段设置伪payload,然后取值范围设定好,进行暴力破解,根据返回响应包的长度判断是否爆破成功
这里我还真遇到过一个真实的案例,是一个APP的登录就是4为位数的验证码并且10分钟内有效足以从1111爆破到9999了,这里就直接给一个成功的截图:
可以看到只有这个2298的长度不同,使用这个值就可以成功登录了
5、验证码与手机未绑定
一般来说短信验证码仅能使用一次,验证码和手机号未绑定,验证码一段时间内有效,那么就可能出现如下情况:
-
A手机验证码,B可能拿来用
-
A手机在一定时间间隔内接收到两个验证码,都可以用;
-
检测接收验证码的手机号和绑定的手机号是否一致
例如:任意用户密码重置漏洞
-
使用自己的手机号收到验证码
-
自己的验证码和对方手机号填上,下一步就是设置新的密码了
6、验证码复用
验证码复用原理其实简单来说就是再某种条件下验证码并没有被刷新,然后被恶意利用,或者再使用完后并未被销毁,而被重复利用。
这里我还是使用pikachu靶场进行演示:
进入靶场后来到验证码绕过(on server)页面
首先我们看看输入后的反应都是什么
验证码输入正确:
验证码输入错误:
可以看到验证码正确提示用户名或者密码错误,验证码错误会直接提示验证码输入错误
然后我们抓包测试:
我们在输入了正确的用户名,错误密码,正确的验证码的情况下,抓包,发到重放模块中:
可以看到这里显示用户名或者密码错误,这是没有问题滴
下面修改为正确的密码看看会有什么反应:
按道理应该是提示验证码错误,但是这里就直接登录成功了,说明存在验证码重放的问题
到此,验证码相关的基础知识和实操就和大家分享到这里了,再见(*^▽^*)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)