暴力破解
一、什么是暴力破解?
暴力破解是一种攻击手段,使用大量的认证信息在认证接口尝试登录,直到得到正确的结果。
二、暴力破解弱口令实验
实验环境:DVWA
2.1标题基于表单的暴力破解
2.1.1 第一步:打开burpsuite拦截
随便输入用户名和密码
2.1.2 第二步:将拦截到的包右击发送到intruder模块
(其中简单介绍一下intruder模块)
Target主要是设置暴力破解访问的host地址和对应的端口号。
2.1.3 第三步:选择我们要破解的变量
这里假设用户和密码都不确定
Positions设置是选择我们要暴力破解的位置。在默认情况下,burp会自动将所有的变量都勾选上。选择clear$,此时所有默认的爆破点都已消失;选择我们需要暴破的变量。
2.1.4 第四步:暴力破解时根据具体情况进行选择attract type
上面有两个变量,选择cluster bomb 逐项的去匹配变量
2.1.5 Attack Type 攻击类型
Sniper
只需要指定一个payload set,无论position有几个变量,都是一个payload set,但会针对每个变量逐项替换。
Battering ram
无论Positions中有几个变数,都是一个Payload Set。并且每个变量位置的值都会是一样的
Pitchfork
不能只输入一个字典,每个变量要有自己的字典文件,也就是说每个变量有一个属于自己的Payload set,但是要注意的是每个Payload set里面的payload个数要一样;采用一对一的匹配关系
多出来的那些payload不会被送出去而已
Cluster bomb
每个变量都要输入字典,但是不会像Pitchfork是一对一的关系,而是每个都会去尝试到,逐项地去尝试一多对的方式。
Payloads 用来配置一个或多个有效负荷的集合
Payloads set 指定需要配置的变量
Simple list是最基本的,用法很简单,可以直接输入按Add,也可以上传文档。虽然这边我们demo都是手动输入,不过实际上要执行暴力破解等动作,通常Payload一定会是很大量的,用手输入可能会累死,所以实际上都是用选择上传文件的方式。(这里基本只用simple list,所以只介绍simple list)
2.1.6 第五步:设置两个payload
前面我们添加了两个变量,所以需要设置两个payload
可以加载自己下载的字典,也可以手动输入;一般情况下选择load去加载字典进行暴破,这里在下方ADD处手动添加
Payload Processing
可以对发出去的Payload进行加工处理,例如可以加入前缀、后缀字符、只截取字符串的某一部分等;后缀常见的可能像是Email结尾的字符,比如@gmail.com之类的。可以利用match替换,可以反转,可以编码,很多方法可以选择。
2.1.7 第六步:开始暴破
options 模块选择攻击的线程等(多线程有助于加快破解速度),由于我添加的猜测数据较少,可以直接攻击,点击 start attack,得到最终的结果。我们可以根据 status 和 length 两个模块来判断是否成功。此处发现请求length与别的不同,重点关注4644的response可以看到暴破成功
2.2 暴力破解之绕过 token
2.2.1 token的原理和作用
token是用于验证身份的,在web系统中验证前端是否能够访问后端系统
是服务端生成的一串字符串,以作前端进行请求的一个令牌,当第一次登录后,服务器生成一个token并返回给前端,之后前端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
2.2.2 第一步 打开burpsuite拦截
在DVWA登录页面随便输入用户名和密码
2.2.3 第二步:将拦截到的包右击发送到intruder模块
2.2.3 第三步 选中需要破解的变量
(这里用户名已知正确,选择密码和token)
2.2.4 第四步 根据具体情况进行选择attract type
将attract type改为pitchfork,pitchfork简单理解就是你设置了几个变量,他就能用几个payload,我们设置了2个变量,就有2个payload,并且一一对应。
2.2.5 第五步 设置跟随重定向
在opotion模块中redirections的follow redirections改为“always”
2.2.6 第六步 在grep-extract中点击add,选择refetch response
记住token的值,后面需要用。
2.2.7第七步 修改线程
payload1为单线程即可(因为 token 是一对一的关系,当第二个 token 产生,第一个 token 就会消失,所以需要将线程调整至 1。)
如不修改线程,则会报错,显示多线程冲突
2.2.8 第八步 加载字典
payload type选择recursive grep(递归查找)
将刚才复制的token粘贴到payload
2.2.9 第九步 开始爆破
根据 status 和 length 两个模块来判断是否成功。此处发现请求length与别的不同,重点关注4723的response可以看到暴破成功。
2.2.10 token防暴破的弊端
token值输出在前端源码中,容易被获取,因此也就失去了防暴力破解的意义。
三、如何防御暴力破解攻击?
人为层面:增强密码安全性
提升密码长度和复杂度
密码应由数字、大小写字母和特殊符号混合组成,且密码越长,破解密码的时间就会成指数增加,一旦密码超过了某个长度,基本上就不能用暴力破解了。例如,使用破解的服务器集群,每秒可以尝试3500亿次,这个速度破解6位密码只需要4.08秒,7位密码只需6.47分钟,8位密码需要10.24小时,9位密码需要40.53天,10位密码就需要10.55年了。
在不同的地方使用不同的密码
重复使用电子邮件、银行和社交媒体帐户的密码更可能导致身份被盗用。可以将网站的缩写作为密码的后缀,例如登陆QQ的密码是Hl9tysY.qq,登陆微博的密码是Hl9tysY.wb,这样每个网站都有独立的密码且不容易忘记。
避免使用字典单词、数字组合、相邻键盘组合、重复的字符串。例如 password 、12345678、asdfg 、aaaa 或 123abc。
避免使用名字或者非机密的个人信息(电话号码、出生日期等)作为密码。
定期修改密码文章来源:https://www.toymoban.com/news/detail-471675.html
系统层面:做好密码防暴力破解设计
系统设计时考虑以下几个方面:
锁定策略:输错密码几次就锁定一段时间。
验证码技术:要求用户完成简单的任务才能登录到系统,用户可以轻松完成,但暴力工具无法完成。例如图形验证码、短信等。
密码复杂度限制:强制用户设置长而复杂的密码,并强制定期更改密码。
双因子认证:结合两种不同的认证因素对用户进行认证的方法。例如密码、身份证、安全令牌、指纹、面部识别、地理信息等。文章来源地址https://www.toymoban.com/news/detail-471675.html
到了这里,关于手把手教你暴力破解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!