web安全入门之浅析暴力破解中的验证码

admin 2021年12月30日22:35:13评论142 views字数 1391阅读4分38秒阅读模式

入门级别的文章,适合新手食用,大佬请忽略~(勿喷,我最近天天被喷



=====前言=====

验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写。验证码常被用于鉴别人机,本篇文章将简单的讲述验证码使用中那些不安全的机制。


=====概述=====

客户端:

1.假的验证码

2.验证码的判断在客户端完成

3.验证码输出在前端或者cookie中


服务端

1.验证码销毁机制不当

2.使用token作为验证码

3.自动识别和其他绕过


=====浅析=====

1.假的验证码

web安全入门之浅析暴力破解中的验证码


登录界面有要求输入验证码,但是这个“验证码”直接写死在页面中,可能单纯的为了高大上一点吧~直接输入提交就好了,等于没有验证码。


2.验证码的判断在客户端完成

web安全入门之浅析暴力破解中的验证码


稍微高大上一点了,通过前端js生成验证码并在前端完成验证,这种在早期的开发中还是比较多的。只需要输入一次然后抓包就可以无限重放达到暴力破解的目的,这里的验证码都不会传到后端去的。


3.验证码输出在前端或者cookie中

web安全入门之浅析暴力破解中的验证码


验证码输出在在前端的一个被隐藏的标签中,攻击者可以读取,实现绕过。


web安全入门之浅析暴力破解中的验证码


为了避免Session占用服务器资源,验证码加密后存在cookie中攻击者可以读取,实现绕过。


4.验证码销毁机制不当

web安全入门之浅析暴力破解中的验证码


如上图的登录页面,验证码的更新可以通过点击验证码或者刷新页面来实现。可以看到如果没有输入或者输入错误的验证码,将返回错误并不进行账户密码的验证。


web安全入门之浅析暴力破解中的验证码


当我们输入了正确的验证码后,后端开始验证账号密码的并将结果返回给客户端。


web安全入门之浅析暴力破解中的验证码

web安全入门之浅析暴力破解中的验证码


那么只要我们不刷新验证码,那么储存在服务端的验证码就不会过期,通过无限重放达到暴力破解的目的。这是因为服务端没有设置验证码的使用次数,正常的一般都是使用过一次后就销毁。


5.使用token作为验证码

web安全入门之浅析暴力破解中的验证码


这种情况很少见,开发者为了减少工作量,直接把token作为验证码来用。


token用于验证登录状态,当你登录后服务端会给你一个token,你接下来的所有的正常操作都是携带token进行的,服务端会判断你的token是否存在以及正确与否。token是有一个存活期的,也就是说你登录后过个一个小时需要重新登录,那么token的存活期就是一个小时,过期后你需要重新登录来获取一个新的token。


web安全入门之浅析暴力破解中的验证码


如上图所示,并没有要求输验证码,但是当我们请求这个页面时,服务端已经给了我们一个token存在header里面了,如上图可以通过抓包可以看到除了账号密码还提交了一个token。当token被用作于验证码时,只要在token的存活期内,就可以无限重放实现暴力破解。


6.自动识别和其他绕过

正所谓道高一尺魔高一丈,除了上述的那些极其不安全的机制外可以简单绕过外,现在的技术可以绕过很多“相对安全”的验证,比如说图像识别。还有像点击验证,滑块验证等,网上也有很多大佬出了相关教程。


=====结尾=====

话又说回来,毕竟是暴力破解,所以需要大量的请求,所以现在都会在服务端进行限制,比如说限制ip的请求次数,限制账号的验证次数等等。还有就是不只是单单的验证码,而是采用多因素验证,就像银行你除了正确输入密码,还需要插入UsbKey一样。






觉得有用的可以在右下角点个“在看



本文始发于微信公众号(台下言书):web安全入门之浅析暴力破解中的验证码

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月30日22:35:13
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   web安全入门之浅析暴力破解中的验证码https://cn-sec.com/archives/491018.html

发表评论

匿名网友 填写信息