Pikachu-暴力破解

概述



Burte Force(暴力破解)概述
    “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。 
    理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
    1.是否要求用户设置复杂的密码;
    2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
    3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
    4.是否采用了双因素认证;
    ...等等。
    千万不要小看暴力破解漏洞,往往这种简单粗暴的攻击方式带来的效果是超出预期的!

    你可以通过“BurteForce”对应的测试栏目,来进一步的了解该漏洞。 

从来没有哪个时代的黑客像今天一样热衷于猜解密码 ---奥斯特洛夫斯基

基于表单的暴力破解

随便的输入username和password使用BurpSuite进行抓包进行分析

我们这里发现最下面一行有用

username=admin&password=111111&submit=Login

 我们只需要对username和password进行爆破即可,选中空白处,右键选择Send to Intruder

 clear之后对username和password添加两个变量,同时Attack type选择Cluster bomb

 先创建两个字典username.txt和password.txt

username.txt

username
name
user
pikachu
admin

password.txt

pass
password
pwd
pikachu
123456

 点击Payloads按照下面图片的样例进行导入,注意Payload set 和Payload type的变化

 

 开始爆破Start attack,唯一长度的就是账号和密码

 输入admin和123456发现可以正确登录

验证码绕过(on server) 

同样还是随便的输入username和password但是要输入正确的验证码,进行抓包分析

 选中空白处,右键选择Send to Repeater

我们修改一下验证码然后go一下,发现无论怎么修改验证码都是username or password is not exists,就证明验证码没有设置次数和时间限制

 这样我们和上面一样进行爆破(抓一个输入正确的验证码的包进行username和password的爆破)

 clear之后对username和password添加两个变量,同时Attack type选择Cluster bomb

 点击Payloads按照下面的面图片的样例进行导入,注意Payload set 和Payload type的变化,

 开始爆破Start attack,唯一长度的就是账号和密码

输入admin和123456发现可以正确登录

验证码绕过(on client)

这个其实就是在前端验证了,和前面的验证码相似,先看网页源码

<script language="javascript" type="text/javascript">
    var code; //在全局 定义验证码
    function createCode() {
        code = "";
        var codeLength = 5;//验证码的长度
        var checkCode = document.getElementById("checkCode");
        var selectChar = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9,'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');//所有候选组成验证码的字符,当然也可以用中文的

        for (var i = 0; i < codeLength; i++) {
            var charIndex = Math.floor(Math.random() * 36);
            code += selectChar[charIndex];
        }
        //alert(code);
        if (checkCode) {
            checkCode.className = "code";
            checkCode.value = code;
        }
    }

    function validate() {
        var inputCode = document.querySelector('#bf_client .vcode').value;
        if (inputCode.length <= 0) {
            alert("请输入验证码!");
            return false;
        } else if (inputCode != code) {
            alert("验证码输入错误!");
            createCode();//刷新验证码
            return false;
        }
        else {
            return true;
        }
    }


    createCode();

 这里我们发现源码就是刷新网页或者输入错误才会更新验证码,所以我们只需要抓一个正确验证码的包,并且对username和password进行爆破就好了

 我们只需要对username和password进行爆破即可,选中空白处,右键选择Send to Intruder

  clear之后对username和password添加两个变量,同时Attack type选择Cluster bomb

 点击Payloads按照下面的面图片的样例进行导入,注意Payload set 和Payload type的变化

唯一长度的就是账号和密码

 token防爆破?

依旧是先抓包

我们发现了token,我们Send to Repeater go一下看一下返回包

我们发现token是不变的,但是在抓了多个包分析下看出来,这个token每一次登录都会改变,所以我们要把js中的token爬下来输入到这个爆破模块里,直接看操作

我们把username,password,token进行变量的添加并且Attack type选择Pitchfork,1,2依旧是和之前一样设置(也就是username和password)

最重要的是第三个,线程设置为1(只有获取上一个请求返回的token值才能,做下一次请求,无法并发)

 在这个界面向下划找到Grep Extract-->add,按照我这么配置,这是一个爬虫的设置,配置完了点一下Refetch response

 复制一下value我这里是64881624991763a58c797155357 然后ok,向下划如图选择always

 Payload type 选择Recursive grep并在Initial payload for first request 输入之前复制的token,然后开始爆破

 这里我们发现唯一长度就是账号密码

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仲瑿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值