zoukankan      html  css  js  c++  java
  • 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小时;

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

  • 相关阅读:
    CF 1114D(538,div2) Flood Fill
    UVA 1640 The Counting Problem
    UVA 11971 Polygon
    UVA 1639 Candy
    CCPC 2019 秦皇岛 Angle Beats
    UVA1153-Keep the Customer Satisfied(贪心)
    UVA1613-K-Graph Oddity(贪心)
    UVA11925-Generating Permutations(贪心)
    UVA11491-Erasing ans Winning(贪心)
    UVA12545-Bits Equalizer(思维)
  • 原文地址:https://www.cnblogs.com/escwq/p/12510928.html
Copyright © 2011-2022 走看看