-
目录
暴力破解&暴力破解漏洞概述
暴力破解概述(瞎猜):连续性尝试+字典+自动化
如果一个网站没有对登录接口实施防暴力破解的措施,或者试试了不合理的措施。则称该网站存在暴力破解漏洞
措施:
- 是否要求用户设置了复杂的密码
- 是否每次认证使用安全的验证码
- 是否对尝试登陆的行为进行判断和限制
- 是否在必要的情况下采用了双因素认证(OTP 动态密码)
暴力破解概述--字典(一个有效的字典,可以大大提高暴力破解的效率):
- 常用的账号密码(弱口令),比如常用用户名/密码TOP 500 等。
- 互联网上被脱裤后账号密码(社工库),比如CSDN当年遗漏的约600w用户信息。
- 使用指定的字符使用工具按照指定的规则进行排列组合算法生成的密码。
存在暴力破解漏洞的网站可能会遭受暴力破解,但成功的可能性并不是100%,所以有些网站即虽然存在暴力破解的漏洞,但其管理员可能会忽略它的危害。
但作为一个搞安全的,我们应该在系统设计的时候,就应该将这些措施加入到对应的认证场景中觉布恩那个为了妥协开发人员或者业务人员有半点侥幸心理
暴力破解漏洞测试流程
- 确认登录接口的脆弱性
确认目标存在暴力破解的漏洞:尝试进行一次登录,利用burp suite 抓包,通过返回的信息来判断是否存在暴力破解的可能;注册一个账号连续失败多次,观察是否会被系统锁掉。
- 对字典进行优化
根据实际的情况对字典进行优化,提高爆破过程的效率。
- 工具自动化操作
配置自动化工具(比如线程、超时时间、重试次数等),进行自动化操作
暴力破解漏洞测试流程-字典优化技巧
技巧一:
根据注册提示信息进行优化
对目标站点进行注册,搞清楚账号的一些限制,比如目标站点要求密码必须是6位以上,字母数字组合,则可以按照此优化字典,比如去掉不符合要求的密码。
技巧二:
如果爆破的是管理后台,往往这种系统的管理员是admin、administrator/root的机率比较高,可以是用三个账号+一个随便的密码,尝试登录,观看返回的结果,确定用户名。比如:
输入xxx/adfad返回“用户名或密码错误”
输入admin/adfad/返回“密码错误”,则基本可以确定用户名师admin;
因此可以只对密码进行爆破即可,提高效率
基于表单的暴力破解(基于burp suite)
- Intruder模块可以通过对http request 的数据包以变量的方式自定义参数,然后根据对应策略进行自动化的重做。常用于自动化猜测、暴力破解过程中。
- targert选项卡
设置攻击目标,可以通过proxy发送;
- Pasitions选项指定需要暴力破解的参数并设置成变量,同时选择攻击模式
- sniper:狙击手
设置一个payload,先将第一个变量使用字典进行测试,然后再将第二个变量使用字典进行测试;
-
- Battering ram:冲撞车
设置一个payload,所有的变量一起使用字典内容被替换,然后一起尝试
-
- Ptichfork:草叉型
每个变量设置一个payload,分别使用对应的字典变量进行同时替换,使用的两个字典内的密码数量必须大致一致;
-
- Cluster bomb:焦束炸弹
需要为每个变量设置一个payload,分别使用字典内容组合对变量进行替换
- Payloads选项卡 设置字典,并可以对字典进行统一的策略处理
- options选项卡 对扫描的线程、失败重试等进行配置;对结果设置匹配的flag;通过一个标识符来区别结果,并在结果栏中flag出来
暴力破解之不安全的验证码分析 -on client
验证码就是区分是人还是机器操作的东西
- 验证码写在前端就是纸老虎,破解方法与没有验证码一样
暴力破解不安全的验证码 -on sever 问题
- 验证码在后台不过期,导致可以长期被使用;
- 验证码校验不严格,逻辑出现问题
- 验证码设计的太过简单和有规律,容易被猜解
验证码是thaqm6
重新试了新的用户名和密码,返回的只是用户名密码错误的问题,并没返回验证码的问题。所以验证码不过期问题,可以进行暴力破解
防暴力破解的措施总结
- 设计安全的验证码(安全的流程+复杂而又可用的图形)
- 对认证错误的提交进行计数并给出限制,比如连续5次输入密码错误锁定两小时
- 必要的情况下使用双因素认证
token对防暴力破解的意义
一般做法:将token以“type = hidden”的形式输出在表单中;在提交认证的时候一起提交,并在后台对其进行校验;
但是,由于token值输出在了前端源码中,因此也就失去了防暴力破解的意义。一般token在防止csrf(一种网络攻击方式)上会有比较好的功效。