一、背景
本文主要讲解在pikachu靶场进行测试,然后对验证码绕过进行实验演示。验证码被绕过本身就是一种漏洞,但是程序员在写后端时,没对验证码进行判断,就给了黑客一些可乘之机,危害还是相当大的。
二、验证码
作用:
登录暴力破解
防止机器恶意注册
认证流程
客户端request登录页面,后台生成验证码
1.后台使用算法生成图片,并将图片reponse给客户端
2.同时将算法生成的值全局赋值存到SESSION
校验验证码
1.客户端将认证信息和验证码一同提交
2.后台对提交的验证码与Session里面的进行比较
客户端重新刷新页面,再次生成新的验证码
验证码算法中一般包换随机函数,所以每次刷新都会改变
三、实验演示
3.1 验证码绕过(on client)
首先,在pikachu环境中,输入账户密码,以及错误的验证码,提示验证码输入错误

输入正确的验证码,进行抓包,抓包情况如下:


点击右键—>send to Repeater—Repeater标签亮

我们发现,只有账户和密码的验证,验证码并没有验证,所以存在验证码绕过漏洞

下面就是基于账户密码的破解(具体操作可以看我上一篇博客)

添加账户字典

添加密码字典

设置爆破成功,会高亮显示

开始攻击并查看结果,正确密码的长度和其他密码长度不一样

使用我们爆破出的用户名密码进行登录,发现登录成功

不安全验证码(on client)常见问题
使用前端js实现验证码(纸老虎)
将验证码在cookie中泄露,容易获取
将验证码在前端源代码中泄露,容易被获取
3.2 验证码绕过(on server)
输入正确的验证码,抓包查看


修改账户名和密码,进行验证,发现之前的验证码可以重复利用

接下来,就是我们之前的密码暴力破解,显示爆破成功

使用正确的账户密码进行登录,显示登录成功

不安全验证码(on server)常见问题
验证码在后台不过期,导致可以长期被使用
验证码校验不严格,逻辑出现问题
验证码设计的太过简单和有规律,容易被猜解
四、防范措施
1.设计安全的验证码(安全的流程+复杂而又可用的图形)
2.对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时
3.必要的情况下,使用双因素认证
注:token防爆破?
F12,查看前端代码,发现有一个隐藏的token
前端提交账号密码时,同时提交了一个隐藏的token值,后端对token进行验证
但是它不能防暴力破解,因为token以明文的方式输出到html表单中,攻击者写一个工具,在每次提交前获取一下这个值,然后添加到字典中,就可以进行连续性的重放
版权声明:本文为weixin_51446936原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。