Pikachu-Burt Force(暴力破解)

首先呢,先推荐个bilibili的网址,这个Pikachu的开发人,里面有其相关教程的视频 ————> bilibili链接

 

暴力破解

暴力破解概述(通过下面几个词来了解下什么是暴力破解)

  连续性尝试 + 字典 +自动化  ————>(瞎猜)

暴力破解漏洞概述

  ✔是否要求用户设置啦复杂的密码;

  是否每次认证都使用安全的验证码;

  是否对尝试登录的行为进行判断和限制;

  是否在必要的情况下采用双因素认证;……等等

暴力破解漏洞测试流程

1、确认登录接口的脆弱性

  确认目标是否存在暴力破解的漏洞。(确认被暴力破解的“可能性”)

  比如:尝试登陆——抓包——观察验证元素和response信息,判断是否存在被暴力破解的可能。

2、对字典进行优化(根据实际情况来优化字典,提高效率)

3、工具自动化操作

  配置自动化工具(比如线程、超时时间、重试次数等)

 

现在开始我们的正题

 一、基于表单的暴力破解

1.先尝试性的登录下(右上角的提示有用户和密码) 登录失败,登录成功

   

 

 

 2.1抓包,全选发送到Intruder模块

可以看到这个表单暴力破解,只有用户和密码  没验证码

 

 

 

 

 

 

2.2现在开始Clear清除下变量,,再Add username和password的变量,选择攻击模式为cluster bomb

各种攻击模式的区别:

●Sinper:一个变量设置一个payload进行攻击

●Battering ram:可以设置两个变量,把payload同时给两个变量

●Pitchfork:两个变量分别设置payload,然后按顺序一 一对应进行破解

●Cluster bomb:两个变量分别设置payload,然后交叉列所有情况进行破解(常用)

 

2.3,字典是我为实验方便写了几个简单的,:

由于是Cluster bomb攻击模式,密码字典需要设置2个(可以一样)

 

2.4最后option可以根据自己需要设置线程,有的Burt suite好像不支持高并发

 

 2.5  grep match模块,大多数情况下我们根据返回页面的length不同观察,但是也可以自己设置falg

将第一步中用户密码登录失败的提示语句复制到下方(username or password is not exists)

 

 

 3.攻击

 

 4.查看结果,得出用户和密码

除了根据返回的length的不同之外,还可以根据是否有   错误的返回的标志   来判断

 

二、暴力破解之验证码绕过(on client)客户端绕过

观察网页源码

这一关虽然加了验证码,但是通过观察源码可以发现,输入的验证码是通过前端的js进行验证,很轻松就可以绕过,可以说形同虚设

 

1.输入

 

2.1设置代理,登录,抓包

2.2发送到Repeater(Repeater中特别方便不用反复设置代理,抓包)

 

 2.3 Go 下面可以看出,是否输入验证码,或者是否输入正确的验证码已经不会再检测

 

 

 

 2.4现在 就和基于表单的暴力破解方法一致了

发送至Intruder,还是只有用户和密码两个变量,验证码不用管

设置payload,设置options

 

 3.攻击,查看结果,获得用户和密码

 

 

三、暴力破解之验证码绕过(on server)服务端绕过

不安全的验证码- on server常见问题

 ● 验证码在后台不过期,导致长期被使用

 ● 验证码校验不严格,逻辑出现问题

 ● 验证码设计太过简单和有规律,容易被猜

 

观察源码,这个是在后端的检测的验证码,我们绕过的思路就是观察他产生的验证码有没有过期设置(用过一次刷新),

如果没有,默认的session就是24min刷新

 

 

 

既然知道啦这个验证码在后台生成后,便不会过期,那我们在抓包暴力破解时,直接随便用一个之前生成的验证码即可

1.1抓包,发送给Repeater

 

 

1.2验证下,是否已验证过的 验证码不会删除    

Go一下

 

 

 

我们修改下用户和密码,使用同样的验证码,再次Go一下

如果还是显示用户或密码错误,,没提示验证码错误,,说明  后台的   已用过的验证码   没有删除

 

 

 说明验证码是可以重复利用的,

 

2.现在我们开始暴力破解,还是之前的操作

发送给Intruder,,选择用户和密码两个变量,,验证码用之前的就行,,选择攻击模式

设置payloads,,设置options(options也可以不修改,这里的Grep Match中的flag不能作为判断正确用户密码的标志,我们采用Length长度不同来判断即可)

3.攻击,查看Length不同于其他的,取得用户和密码

 

 

 

四、暴力破解之token防爆破?

token一般的做法:

  1、将token以 “type= ‘hidden’ ”的形式输出在表单中;

  2、在提交的认证的时候一起提交,,并在后台对其进行校验;

但,由于token值输出在了前端源码中,容易被获取,因此也就失去了防暴力破解的意义。

一般token在防止CSRF(跨站请求伪造)上会有比较好的功效,具体在CSRF漏洞部分再深入。

 

开始具体实验,查看网页源码(每次刷新后的token值是不一样的)

但是由于 token是明文方式输出到html表单中,

攻击者只要写一个工具每次提交认证前获取一下这个值,然后添加到自己的字典里面,就可以进行连续性的存放

所以说用token防暴力破解是没有用的

这样每次提交要验证token值(每次更新),表面上可以防止。但是他后端产生的token每次以明文形式传到前端,就有了漏洞。

1.1抓包之后,发送到Intruder,我们把token和密码设置变量,

破解模式选为pitchfork

 

1.2在options中的grep-extract中打勾点击add,

添加过滤条件  点击refetch response  

找到响应包中的token  复制到别处先  再选中token值     点击确定(我这里是379945e70d48a4e311393118204)

 

 

1.3将options最下方的redirections选择为always

 

 1.4然后设置payload,第一个参数设置不在赘述(和以前破解密码一样),

第二个参数选择Recursive grep,然后将options中的token作为第一次请求的初始值。(把之前复制的token值复制到这)

 

 2.破解(点击start attack)

出现错误,提示Recursive grep不支持多线程并发,将其改为1就行啦

 

 获取密码

 

 

 

防暴力破解的措施总结

● 设计安全的验证码(安全的流程+负载而又可用的图形);

● 对认证错误的提交进行计数并给出限制,比如连续5次密码错误,锁定2小时;

必要的情况下,使用双因素认证

 

posted @ 2020-03-17 15:22  escwq  阅读(408)  评论(0编辑  收藏  举报