pikachu-暴力破解模块

暴力破解模块

暴力破解我们在sqli-labs和DVWA上做过很多次暴力破解,暴力破解一般指穷举法,穷举法的基本思想是根据题目的部分条件确定答案的大致范围,并在此范围内对所有可能的情况逐一验证,直到全部情况验证完毕。若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。穷举法也称为枚举法。(我们在pikachu的平台中点击暴力破解里的概述查看暴力破解的含义)。我们暴力破解使用的工具是BurpSuite,我们这里简单介绍一下intruder模块的内容。

Target选项

设置攻击目标,可以通过proxy发送

pikachu-暴力破解模块

 

Pasitions选项

 指定需要暴力破解的参数并设置成变量,同时选择攻击模式

pikachu-暴力破解模块

这里面的攻击模式有四种:

Sniper(狙击手):一个payload,先将第一个变量使用字典进行测试,然后将第二个变量使用字典进行测试

Battering ram(冲撞车):可以设置多个payload,所有变量一起用字典内容被替换,然后一起尝试

Pitchfork(草叉型):每个payload设置对应的字典内容,然后按顺序一一对应进行破解

Cluster bomb(焦束炸弹):为每一个变量设置一个payload,分别使用字典内容组合对变量进行替换

进一步了解可以参考 https://www.cnblogs.com/wayne-tao/p/11130158.html

Payloads选项

设置字典,并对字典进行统一的策略处理

pikachu-暴力破解模块

 

 pikachu-暴力破解模块

 

 Options选项

对扫描的线程、失败重试等进行配置;对结果设置匹配的flag:通过一个标识符来区别结果,并在结果栏中flag出来

pikachu-暴力破解模块

 

 pikachu-暴力破解模块

 

 pikachu-暴力破解模块

 

 了解之后,我们开始暴力破解

一、基于表单的暴力破解

在左侧栏中点击暴力破解出现下拉菜单,选择基于表单的暴力破解

pikachu-暴力破解模块

 

 首先测试,随便输入一个用户名密码,和正确的用户名密码,看看它们的返回值有何不同

不知道何为正确的可以点击右上方

pikachu-暴力破解模块

 

 

我们输入错误的  111222/123

pikachu-暴力破解模块

 

 正确的 admin/123456

pikachu-暴力破解模块

 

 因为返回的结果不同,这样我们就可以根据不同的信息来进行暴力破解,我们调成手动代理,打开BurpSuite,随便输入一个用户名密码,点击Login,进行抓包

pikachu-暴力破解模块

 

全部选中,将其发送到intruder模块

pikachu-暴力破解模块

 

 进入intruder模块,点进Positions,点击Clear$,清楚无关变量,然后选中username和password变量,点击Add选中,再选择攻击模式为Cluster bomb

pikachu-暴力破解模块

 

 然后我们进入Payloads,在Payload Options中点击Load导入字典(其实就是我们提前创建的一个文本文档,里面写好我们猜测的用户名和密码,Brup Suite会根据这个字典,把里面的内容进行尝试,字典存放的路径和命名随意。在Payload Sets中把Payload set设置为2,因为我们有两个参数需要破解。注意:在Payload set为1的时候载入字典,然后再改成2

pikachu-暴力破解模块

 

 最后option可以根据自己需要设置线程,有的好像不支持高并发,然后补充一下grep match这,大多数情况下我们根据返回页面的length不同观察,但是也可以自己设置flag

pikachu-暴力破解模块

 

这样我们根据长度爆破出正确的用户名和密码

 pikachu-暴力破解模块

 

 将浏览器改回无代理,使用爆破出来的结果登陆,发现登陆成功

pikachu-暴力破解模块

 二、验证码绕过(on server)

验证码可以用来防止恶意注册、防止暴力破解。服务端验证码常见问题:

1、验证码在后台不过期,导致长期可以使用

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

3、验证码设计的太过简单和有规律,容易被猜解

查看源码

pikachu-暴力破解模块 

观察源码,这个是在后端的检测的验证码,我们绕过的思路就是观察他产生的验证码有没有过期设置(用过一次刷新),如果没有默认的session就是24min刷新。可以看到,输入错误的验证码会被检测到,因为检测是在后端完成。看似很严谨了,但是我们输入正确的验证码之后,验证码并没有过期,还可以继续使用。

pikachu-暴力破解模块

输入正确的账号,错误的密码,正确的验证码 ,修改代理,抓包,发送到Repeater

pikachu-暴力破解模块

 

随意修改账号密码,点击GO,在右侧可以看到username or password is not exists  这就代表验证码可以再次使用,没有过期

pikachu-暴力破解模块

 

 我们使用这个验证码进行暴力破解,接下来的步骤参考上面基于表单的暴力破解

三、验证码绕过(on client)

这个验证码绕过是在前台,只在前端处理。

我们输入错误的用户名密码和正确的验证码,返回提示用户名或密码错误

pikachu-暴力破解模块

 

 

输入正确用户名密码,错误验证码,返回弹窗,验证码输入错误

pikachu-暴力破解模块

 

 调为手动代理,打开BurpSuite,输入一次正确的验证码,随意输入账号密码,进行抓包,选中发送到Repeater

pikachu-暴力破解模块

 

 在Raw当中,随意改一下验证码,点击“Go”,若右侧出现用户名或密码错误,(即”username or password is not exists“的字样),而不是验证码错误,则验证码只在前端处理

pikachu-暴力破解模块

 

 我们将数据包发到intruder,直接暴力破解,无需考虑验证码,其他的步骤跟基于表单的暴力破解一样了

四、token防爆破?

token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。

1、token 完全由应用管理,所以它可以避开同源策略

2、token 可以避免 CSRF 攻击

3、token 可以是无状态的,可以在多个服务间共享

可以查看参考DVWA暴力破解的高等级

我们这里输入正确的用户名,错误的密码 调代理,打开BurpSuite抓包

pikachu-暴力破解模块

 将包发送至intruder 破解类型选择pitchfork  设置password和token是变量

pikachu-暴力破解模块

 在options中的grep-extract中打勾点击add添加过滤条件 value=" 点击refetch response找到响应包中的token 选中复制token值点击ok  

pikachu-暴力破解模块

将线程设置为1

pikachu-暴力破解模块

 

 

   将最下方的redirections选择为always

pikachu-暴力破解模块

 

 设置payload  set为1 文件选择为密码字典

pikachu-暴力破解模块

 

 

 

 

  set为2 type为recursive grep时 复制刚才的token值到first request

pikachu-暴力破解模块

 

爆破完成后可以看到相应包长度不同的包中有一个登录成功

pikachu-暴力破解模块

 

上一篇:Pikachu-XSS(跨站脚本)漏洞


下一篇:pikachu-Unsafe file downloads/ uploads(不安全文件下载/上传)