★★实战前置声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
一、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】》