逻辑漏洞之验证码问题

首先可以推荐下文章吧,种类还是很全的

https://www.cnblogs.com/ping007/p/10265764.html

https://www.freebuf.com/news/131542.html

https://blog.csdn.net/qq_36334464/article/details/79467894

背景


验证码类型 

验证码机制已经被引入好多年了吧,现在的web应用中随处可见的验证码,主要也就三类

  • 由浏览器随机生成的验证码,然后直接在页面展示,多用于登陆验证,功能就是主要防止爆破的(下面我也就写了这么一个代码,文章其他的想法,全靠各位哥哥yy)
  • 发送到手机的验证码,主要也是用于手机登录,或者重置一些信息之类的
  • 发送到邮箱的验证码,功能同手机

为什么会产生漏洞?

 针对于第一种验证码

1、最简单粗暴的就是验证码无效,就是后台没有对随机生成的验证码进行验证

2、验证码不更新,同一个验证码可以被多次使用

上面第二个还可以分成一直不更新,还有就是登录失败后只要不点确认就不更新,都可以进行爆破

漏洞复现


首先标红说明此处仅限第一种登录验证码

话不多说,直接打开我的渣渣代码,如下图

验证码无效测试

输入正确的用户名和密码,随便输入一个验证码,也许验证码这里会限制输入的位数,但我这里啥也没写,也没限制数字,随便输入

登陆成功,发现后台,知识接受了验证码的传参,但是并没有对其进行验证,如下图

在这个时候,我们对后台弱口令进行爆破的时候完全可以无视验证码的存在,大概这不叫验证码吧,也许你会说,这真的存在吗,放心存在!

这里可以直接输入,所以没有使用工具,当然你也可以使用工具进行测试

验证码不更新

造成这个漏洞存在的原因

后台验证码不是一个随机数,而是一个固定的数值,不能叫不更新,而是更新出来的验证码都是一个数值,如下图,我把验证码设置为固定值5678

后台验证码无法实现点击提交表单后,立即刷新验证码,而是等用户点了登录失败的确认后,才再一次刷新出验证码,这就造成了,只要我们不点登录失败的框框,验证码就不会刷新,也可理解成,验证失败后没有对验证码进行重置

如下图,简单的登录已经实现了,验证码也实现了

点击确定返回后,验证码并不会更新,可以对密码进行爆破

另外一种方式的利用方式类似

深深的感觉到自己代码太菜,下面还是不自己举例子了

手机或邮箱验证码

针对于手机验证码的问题,个人理解能放在此处与验证码本身机制相关的逻辑问题有三个

验证码存在于返回包中

发送验证码时可以向多个手机号发送

验证码属于弱验证,可被爆破

下面放个验证码在返回包的图吧

算了先不写这块了,以后遇到了在重写吧

这里主要是想说一下,验证码,本身存在的问题

至于其他的由验证码引发的其他安全问题,后面会写。逻辑漏洞其实不难,但是不知道为啥好难写啊。。。。


来加一点点

验证码产生的安全问题:

  • 前端验证验证码,并没有后端验证
  • 验证码设置了但是并没有效验 (类似于本文一开始那个,后台并没有验证码的校验代码)
  • 验证码可以重复使用 (验证码不更新,或者触发条件更新,而不是自动提交一次更新一次)
  • 空值绕过
  • 验证码可控制
  • 验证码有规则(有规则,本身如果验证码不更新不改变也是一个规则)
  • 有万能验证码
  • 验证码放在cookie参数里(这个和在返回包里面类似,可以直接获取)

前端验证码如何绕过?

我们输入一次验证码,然后抓包,其余的所有操作都可以在,burp中进行重放

万能验证码一般是什么?

一般是000000 或者 888888

验证码空值绕过是怎么回事?

去除数据包里的验证码参数,发现绕过了传参机制,你不传这个参数,然后就没有进入验证码校验流程

验证码可控

验证码可能存在于url传参里,url设置定,验证码可控

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值