暴力破解攻击概述:
连续性尝试 + 字典 + 自动化
一个有效的字典,可以大大提高暴力破解的效率
常用的账号密码 弱口令,比如常用用户名/密码 TOP 500等 ;
互联网上被脱裤后账号密码(社工库),比如CSND当年泄露的约600w用户信息;
使用指定的字符使用工具按照的规则进行排序组合算法生成的密码;
暴力破解漏洞测试流程:
1、确认登录接口的额脆弱性
确认目标是否存在暴力破解的漏洞(确认被暴力破解的 可行性)
比如:尝试登录——抓包 --- 观察验证元素和 response 信息,判断是否存在被暴力破解的可能。
2、对字典进行优化
根据实际的情况对字典进行优化,提高爆破过程的效率
3、配置自动化工具(比如 线程、超时时间、重试次数等),进行自动化操作。
字典优化技巧:
1、根据注册提示信息进行优化
对目标站点进行注册,搞清楚账号的一些限制,比如目标站点要求密码必须6位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码;
2、如果爆破的是管理后台,往往这种系统的管理是admin/adminnistrator/root的几率比较高,可以使用这三个账号 + 随便一个密码,尝试登录,观看返回的结果,确定用户名。比如输入xxx/yyy 返回 用户或密码错误;输入admin/yyy 返回 密码错误,则基本可以确定用户是admin;因此可以只对密码进行破解即可,提高效率;
基于表单的暴力破解攻击 (基于 brup suite)burp suite free edition-intruder
burp一个集成的 web 安全测试系统,有 free(免费) 和 pro(收费) 两个版本
proxy 和 intruder 两个模块
官网下载:https://portswigger.net/burp/download.html
暴力破解之不安全的验证码分析
我们一般用验证码来做什么? 登录暴力破解 防止机器恶意注册
验证码的认证流程:
客户端request登录页面,后台生成验证码:1.后台使用算法生成图片,并将图片response给客户端;
2.同时对提交的验证码与SESSION里面的进行比较;
客户端重新刷新页面,再次生成新的验证码:
验证码算法中一般包含随机函数,所以每次刷新都会改变;
--- 不安全验证码 -on client- 绕过
查看验证码是否是在前端做的,在前端做验证码是不安全的;后端没有验证 验证码是肯定可以被绕过的;
不安全的验证码:
所有验证码生成操作直接通过前端js来实现 这就是一个纸老虎;
将验证码在cookie中泄露,容易被获取;
将验证码在前端源代码中泄露,容易被获取;
不安全的验证码 --- on server 常见问题
验证码在后台不过期,导致可以长期被使用;
验证码校验不严格,逻辑出问题;
验证码设计的太过简单和有规律,容易被猜解;
查看验证码是否可以多次被利用;服务端绕过;服务器端将验证码字符串以明文cookie方式给了前端,那验证码没有什么用;所以要用一次就销毁一次验证码
Token可以防暴力破解?其实不可以的,只要每次在暴力破解的时候每次获取一次 Token 这个值就可以了;所以这个值也不可以明文;
学习所用;并且自己做了一下简单的测试;
自己搭建的环境测试;以上用的 burp 做的测试;