文章目录
1 暴力破解原理和测试流程
连续性变化+字典+自动化
一个有效的字典,可以大大提高暴力破解的效率。
-
常用的账号密码(弱口令)
-
互联网上被脱裤后账号密码(社工库)
-
使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码
1.1 测试流程
1.确认登录接口的脆弱性
确认目标是否存在暴力破解的漏洞。(确认被暴力破解的可能性)
比如:尝试登录——抓包——观察验证元素和response信息,判断是否存在被暴力破解的可能。
2.对字典进行优化
根据实际的情况对字典进行优化,提高爆破过程的效率
3.工具自动化操作
配置自动化工具(比如线程,超时时间,重试次数等),进行自动化操作
1.2 字典优化技巧
技巧一:
根据注册提示信息进行优化
技巧二:
如果爆破的是管理后台,往往这种系统的管理员是admin/administrator/root的几率比较高
例如输入xxx/yyy返回“用户名或密码错误”
输入admin/yyy返回“密码错误”,则基本可以确定用户名是admin
2 基于表单的暴力破解
burp suite intruder
Pasitions选项卡
指定需要暴力破解的参数并设置成变量,同时选择攻击模式:
Sniper:狙击手
设置一个payload,先将第一个变量使用字典进行测试,然后在将第二个变量使用字典进行测试。
Battering ram:冲撞车
设置一个payload,所有的变量一起用字典内容被替换,然后一起尝试
Ptichfork:草叉型
每个变量设置一个payload,分别使用对应的字典对变量进行同时替换
Cluster bomb:焦束炸弹
需要为每个变量设置一个payload,分别使用字典内容组合对变量进行替换。
3 验证码绕过-on client相关问题
验证码一般用来防止登录暴力破解,防止机器恶意注册。
3.1 认证流程
客户端request登录页面,后台生成验证码:
- 后台使用算法生成图片,并将图片response给客户端
- 同时将算法生成的值全局赋值存到SESSION中
校验验证码:
- 客户端将认证信息和验证码一同提交
- 后台对提交的验证码与SESSION里面的进行比较
客户端重新刷新页面,再次生成新的验证码:
验证码算法中一般包含随机函数,所以每次刷新都会改变
3.2 常见问题
使用前端js实现验证码(纸老虎)
将验证码在cookie中泄露,容易被获取
将验证码在前端源代码中泄露,容易被获取
4 验证码绕过服务端
验证码在后台不过期,导致可以长期使用
验证码校验不严格,逻辑出问题
验证码设计的太过简单和有规律,容易被猜解
SESSION默认过期时间为24min
5 防暴力破解的措施总结
设计安全的验证码(安全的流程+复杂而又可用的图形)
对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时
必要情况下,使用双因素认证