验证码绕过和防范

一、背景

本文主要讲解在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版权协议,转载请附上原文出处链接和本声明。