【Web安全攻防从入门到精通】验证码漏洞

验证码漏洞

分类

  • 图片验证码

通过在图片上随机产生数字、英文字母、汉字或者问题进行验证。伴随OCR技术的发展,能够轻易被破解

  • 手机短信验证码

可以比较准确和安全地保证购物的安全性,验证用户的正确性,是最有效的验证码系统。

  • 行为式验证码

行为式验证码是通过用户的某种操作行为来完成验证,如拖动式验证码、点触式验证码

  1. 拖动式验证码:类似于手机的滑动解锁,将滑块拖动到指定位置完成验证
  2. 点触式验证码:选择图片中与文字描述相符的内容完成验证
  • 语音验证码

常用于网站、移动客户端、银行金融等用户身份验证,以及支付确认等安全性要求更高的即时服务。

  • 视频验证码

视频验证码将随机数字、字母和中文组合而成的验证码动态嵌入MP4、flv等格式的视频中,增大了破解难度。可以有效防范字典攻击、穷举攻击等。

危害

  1. 恶意攻击者对账号密码利用工具进行暴力破解
  2. 任意用户登陆
  3. 验证码缺失利用抓包工具对目标网站或个人实施短信轰炸

漏洞检测

通用设计缺陷

  • 验证码无效

无论输入什么都判断验证正确

  • 验证码由客户端生成、验证

验证码由客户端JS生成并且仅仅在客户端用JS验证

检测:判断验证码是否仅由客户端验证

  • 验证码回显

验证码在HTML或Cookie中显示,或者输入到Response Headers的其他字段,可被直接查看

检测:查看HTML源码或者对相应包进行分析

  • 验证码固定

也叫验证码重复使用,是指验证码没有设置使用期限,首次认证成功后诶呀删除Session中的验证码,使得验证码可以多次被验证成功。

检测:填写正确登录信息和验证码,然后抓取提交数据包,重复提交该数据包,登陆成功则存在验证码重复使用的问题。注意,可通过修改与验证码无关的参数的大小来实现多次提交,自设一个字典作为该参数Payload。

  • 验证码可爆破

服务端对验证时间、次数做出限制,存在爆破的可能性。

检测:利用BurpSuite对验证码参数进行暴力破解

  • 验证码可猜测

验证码设置比较简单,可能只有数字或者字母组成,也可能是其设定范围有限,导致验证码内容可被猜测。

检测:根据已有验证码对验证码设定范围进行猜测。

  • 验证码可绕过

由于逻辑缺陷,可绕过,常见绕过方式有直接删除Cookie、验证码参数为空、直接删除验证码参数可绕过和修改Response状态值等,也可根据情况组合以上绕过方式

检测:利用BurpSuite更改请求包数据进行多次测试。

短信验证码

很多系统的短信验证码接口存在逻辑问题,因此产生的危害也很多,比如短信轰炸、任意用户注册、任意用户重置密码等,还可能导致CSRF。

短信验证码漏洞通常出现在注册登录、密码找回、敏感信息修改、获取等模块。

  • 短信轰炸

这类漏洞存在的原因是没有对短信验证码的发送时间、用户及其IP做一些限制。

检测:抓包后利用Burp Suite的重放功能,结果均返回成功

  • 任意用户注册

没有将短信验证码与手机绑定,可通过更改手机号填写

  • 任意用户密码重置

一般出现在密码找回模块,系统没有将发送的短信验证码与手机绑定,可通过修改手机号获取验证码进行绕过,重置和登陆该用户的账号、密码。

但也有一种情况就是,系统将发送的短信验证码与手机绑定了,但没有将该手机号和相应账号绑定,还是可以绕过。

修复

修复时建议使用安全性强的验证码。

可以从一下方面保证验证码的安全性:验证码长度不低于4位,至少同时包含数字、字母或汉字,增加干扰因素如线条等,避免使用容易被程序自动识别的验证码。此外也可通过以下方式修复:

  • 验证码不应由客户端生成或返回客户端
  • 系统在开发时注意验证识别后销毁Session中的验证码
  • 用户提交的验证码不能为空
  • 短信验证码不少于6位,有效期不超过1分钟,验证码错误次数超过上限采取账户锁定策略。
posted @ 2022-10-31 10:20  灰心爷爷  阅读(288)  评论(0编辑  收藏  举报