暴力破解的绕过和防范(验证码&token)
-
暴力破解之不安全的验证码分析
---on client
---on server -
token可以防暴力破解吗?
-
暴力破解常见的防范措施
聊一聊“验证码”
我们一般用验证码来做什么?
登陆暴力破解
防止机器恶意注册
搞清楚验证码的认证流程
客户端request登陆页面,后台生成验证码:
1.后台使用算法生成图片,并将图片response给客户端
2.同时将算法生成的值全局赋值存到SESSION中
校验验证码:
1.客户端将认证信息和验证码一同提交
2.后台对提交的验证码与SESSION里面的进行比较
客户端重新刷新页面,再次生成新的验证码:
1.验证码算法中一般包含随机函数,所以每次刷新都会改变
2.验证码会过期
验证码可以防暴力破解,但你怎么证明你的验证码安全呢?
- 不安全的验证码-on client-绕过实验演示
- 代码演示
测试一下登陆和抓包
查看页面源代码,看看验证码是不是前端做的,发现所有的验证码逻辑在JavaScript里面实现的
一旦JavaScript被调用,它就会生成验证码操作,看看它在哪里被调用的
点击一下,它就会调用JavaScript的函数去生成新的验证码
在前端生成验证码并核对验证码,在安全性上面是非常不靠谱的。
我们在看看它后端到底有没有验证,请求包发生给Repeater模块,数据包重放的
或者不输入验证码,看看后端有没有验证机制
两次测试发现,后台是没有验证码机制的
后面的步骤,直接对账号,密码两个变量进行爆破,验证码就不管了。
所有的漏洞源码都在这里
暴力破解的在这里
浏览后台源代码发现,它只对传过来的账户密码做判断,并没有验证码的
- 不安全的验证码-on client常见问题
- 使用前端js实现验证码(纸老虎)
- 将验证码在cookie中泄露,容易被获取
- 将验证码在前端源代码中泄露,容易被获取(已图片的方式,而不是字符串,验证码提前泄露了)