zoukankan      html  css  js  c++  java
  • pikachu-暴力破解模块

    暴力破解模块

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

    Target选项

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

    Pasitions选项

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

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

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

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

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

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

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

    Payloads选项

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

     

     Options选项

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

     

     

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

    一、基于表单的暴力破解

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

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

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

    我们输入错误的  111222/123

     正确的 admin/123456

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

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

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

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

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

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

     

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

     二、验证码绕过(on server)

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

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

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

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

    查看源码

     

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

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

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

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

    三、验证码绕过(on client)

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

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

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

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

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

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

    四、token防爆破?

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

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

    2、token 可以避免 CSRF 攻击

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

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

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

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

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

    将线程设置为1

       将最下方的redirections选择为always

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

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

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

  • 相关阅读:
    下班的时候收到两封Mail
    图解SSIS监视文件夹并自动导入数据
    用SqlDependency类为SQL2005查询提供更改通知
    一句话理解ref object的意义
    开源Mono框架将C#编程带到iPhone、Android和Wii
    div css 图片和文字上下居中对齐
    js 表单验证思路
    jquery 表单验证插件
    PHP开源AJAX框架
    Hello China V1.5 源码下载地址
  • 原文地址:https://www.cnblogs.com/heiwa-0924/p/12501052.html
Copyright © 2011-2022 走看看