文章目录
暴力破解之不安全的验证码分析
验证码简介
验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机还是人的公共全自动程序。
可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试,实际上用验证码是现在很多网站通行的方式,我们利用比较简易的方式实现了这个功能。这个问题可以由计算机生成并评判,但是必须只有人类才能解答。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。
验证码的作用
1.防止恶意破解密码、刷票、论坛灌水、刷页。
2.登录暴力破解。
3.防止机器恶意注册。
验证码的认证流程
① 客户端request登录界面,后台生成验证码:
1.后台使用算法生成图片,并将图片response给客户端;
2.同时将算法生成的值全局赋值存到session中。
② 校验验证码:
1.客户端将认证信息和验证一同提交;
2.后台对提交的验证码与session里面的进行对比。
③ 客户端从新刷新页面,再次生成新的验证码:
验证码算法中一般包含随机函数,所以每次刷新都会改变。
Token可以防暴力破解吗?
不安全的验证码-on client-绕过实验演示
1.此时burpsuite保持抓包状态,然后在pikachu页面随机输入账号、密码和验证码,以供burpsuite抓取post请求。2.将post请求发送到intruder中,然后设置攻击,开始攻击。
3.登录成功。
不安全的验证码-on client-常见问题
- 使用前端js实现验证码(纸老虎);
- 将验证码在cookie中泄露,容易被获取;
- 将验证码在前端源码中泄露,容易被获取。
不安全的验证码-on server-绕过实验演示
1.启动phpstudy开启mysql和apache,启动burpsuite,使用火狐浏览器打开pikachu练习平台,此时burpsuite处于抓包状态,在验证码绕过(on server)中随机输入账号、密码,再输入正确的验证码。
2.打开burpsuite中proxy模块,将输入正确的验证码post请求发送到repeater验证验证码是否可重复利用。
3.根据repeater验证结果得出验证码可以重复利用,所以开始设置攻击器,开始攻击,破解账号密码。
不安全的验证码-on server-常见问题
- 验证码在后台不过期,导致可以被长期使用;
- 验证码校验不严格,逻辑出现问题;
- 验证码设计的太过简单和有规律,容易被拆解。
暴力破解常见的防范措施
- 设计安全的验证码(安全的流程+复杂而又可用的图形);
- 对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;
- 必要的情况下,使用双因素认证。