暴力破解【验证码绕过、token防爆破】靶场实验

发布时间 2023-11-03 03:07:31作者: 大象只为你

★★实战前置声明★★

文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

一、BurpSuite简介

爆破工具Burp Suite是用于攻击web应用程序的集成平台,包含许多工具,并为这些工具设计了很多接口,促进加快攻击应用程序的过程。所有工具都共享一个强大、可扩展的框架,处理并显示HTTP消息。

暴力破解主要使用Intruder模块,该模块用于自动对Web应用程序自定义的攻击,可以使用Intruder方便地执行许多任务,可用于缺陷测试:SQL注入,跨站点脚本,路径遍历、暴力攻击认证系统、操纵参数、拖出隐藏的内容和功能、数据挖掘、并发攻击、应用层的拒绝服务式攻击等。

Intruder爆破模块主要由4个模块组成:
1、Target:用于配置目标服务器进行攻击的详细信息;
2、Positions:设置Payloads的插入点和攻击类型(攻击模式);
3、Payloads:设置payload,配置字典
4、Options:收发包细节,发包速度、记录是否保存,发包后是否要更新请求头、主动声明请求连接已关闭、记录匹配到的数据等。

二、暴力破解【验证码绕过、token防爆破】靶场实验

暴力破解可分为4类:简单的暴力破解、前端JS检测验证码、后端服务器检测验证码和Token防爆破检测。第一类在《认证崩溃(中)之暴力破解和靶场实验一》已分享过了。本文分享剩下的3类,还以pikachu靶场为例。使用火狐浏览器开启burp,在验证过程BurpSuite开启拦截器。

1、基于表单的暴力破解

详细破解过程请参考《认证崩溃(中)之暴力破解和靶场实验一》

2、验证码绕过(on server)

2.1、思路

使用burpsuite抓包,使用repeater进行请求验证,验证码在服务端是否有验证正确性,验证完是否做清除,发现在服务端有验证验证码的正确性,但正确的验证码未做清除动作,可持续使用。

2.2、页面输入信息提交

2.3、BurpSuite发送Repeater


2.4、BurpSuite发送Intruder

在BurpSuite拦截到的信息右击选择Send to Intruder,在Intruder tab下的Positons,清除默认指定的参数点,重新设置并指定攻击类型

2.5、设置payload


2.6、攻击并分析结果


2.7、web端登录验证

注意:火狐浏览器关闭burp代理,输入上一步破解的用户名和密码登录,验证可用。

3、验证码绕过(on client)

3.1、思路

故意输入错的验证码,发现页面出现弹窗信息,并没有发起提交请求动作,输入正确的验证码才有发请求动作。

右击:查看页面源码,搜索关键字:Please Enter Your Information,在form表单的onsubmit="return validate();",找到validate();方法代码

<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();
</script>

从validate()方法看出验证码是在前端生成,验证也是在前端,提交时验证不通过,直接不发起post请求。

因此破解是跟【1、基于表单的暴力破解】是一样的。

3.2、详细操作步骤

参考1、基于表单的暴力破解 即可

4、token防爆破

4.1、思路

先界面随便输入用户名和密码,点按钮提交,看请求参数,发现参数有一个token。

刷新页面,右击:查看页面源码,搜索关键字:Please Enter Your Information,看到form内容里面有一个input标签,type=hidden,value有一串数字,页面一刷新就不一样。

接下来参考【2、验证码绕过(on server)】,先使用burpsuite抓包,使用repeater进行请求验证,token在服务端是否有验证正确性,验证完是否做清除,发现在服务端有验证token的正确性,但正确的token也有做清除动作,无法持续使用,必须每次重新获取。

4.2、页面输入信息提交

4.3、BurpSuite发送Repeater

参考步骤2.4、BurpSuite发送Repeater

4.4、BurpSuite发送Intruder

在BurpSuite拦截到的信息右击选择Send to Intruder,在Intruder tab下的Positons,清除默认指定的参数点,重新设置并指定攻击类型

攻击类型选择:Pitchfork,假设已经知晓用户名, 设置password和token为爆破点进行标记

4.4.1、设置payload

设置密码本,点击payload,选择第一项的密码本与低等级的相同;
第二项的时候选择Recursive grep 递归查找并且把之前得到的token值粘贴到下方的方框中。

4.4.2、设置Options-正则抽取

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

4.4.3、设置Options-重定向

重定向设置成:always总是 ,用于动态获取token,下次请求的参数值

4.4.4、设置Resource Pool

★★注意★★:线程一定要设置为1,因为需要从响应里面的取token用于下一次请求的参数值。

4.6、攻击并分析结果

4.7、web端登录验证

注意:火狐浏览器关闭burp代理,输入上一步破解的密码登录,验证可用。

三、资料获取

Burp Suite工具之前已提供过了,如需要请关注我的公众号:大象只为你,回复:【BP安装】获取。

靶场环境搭建请参考《靶场环境搭建【XP、pikachu、dvwa、sqli-labs】》