利用 Burp Suite 进行密码爆破
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
利用 Burp Suite 进行密码爆破
1.Intruder 功能介绍
使用 BP 工具的 Intruder
模块高度可配置可以对目标网站进行密码爆破一般被用于网站的安全渗透测试场景
BP 工具的 Intruder
模块包含几个功能标签
Positions
设置请求中的参数及攻击类型Payloads
为上面的参数设置数据集、参数编码、加密等功能Resource Pool
指定请求线程及延时时间Options
请求头、攻击结果、重定向等相关的配置
2.攻击类型
Intruder
进行密码爆破时可以有 4 种攻击类型供选择
分别是Sniper狙击手模式、Battering ram破城锤模式、Pitchfork音叉模式、Cluster bomb集束炸弹模式
Sniper
使用一组数据集合依次对 $ 标记的变量进行爆破即针对一个参数变量使用一个数据集合
使用场景单一目标已知用户名密码未知
Battering ram
使用一组数据集合同时对 $ 标记的所有变量进行爆破即针对多个参数变量使用一个数据集合
使用场景两个单一目标相互不影响
Pitchfork
使用多组数据集合同时爆破被 $ 标记的变量即针对多个参数变量使用多个数据集合
使用场景用户名和密码都未知每个用户名只使用一个密码进行攻击
Cluster bomb
使用多组数据集合进行组合笛卡尔积后依次对多个爆破点变量进行爆破即针对多个变量使用多个数据集合的组合
实用场景两个目标每个用户名使用所有密码都进行一次攻击
3.实战
皮卡丘靶场基于表单的暴力破解
打开拦截功能在浏览器中随便输入一个用户名、密码执行登录操作这样在 BP 工具拦截模块中可以拦截到这个请求
点击「 Action
」按钮选择将数据包发送给 Intruder
模块
在 Positions
标签下我们需要先点击右侧的「 Clear §
」按钮来清除默认的参数标签
然后鼠标选择需要设置为变量的值点击右侧的「 Add §
」按钮来设置它为变量这里只设置用户名和密码
攻击类型我们选择「 Cluster bomb
」让所有用户名和密码随机组合进行攻击
接着我们在 Payloads
标签下根据参数索引对用户名、密码配置不同的数据集
数据集可以从本地文件中导入也可以手动添加或者从剪切板中粘贴🍂
配置数据集完成后我们可以看一下数据包的个数如果数据包的量很大那么爆破将会持续很长时间
最后点击右上角的「 Start attack
」按钮对目标网站进行密码爆破
找到数据包长度Length明显不一样的查看响应包发现登录成功了得到用户名是admin密码是123456为弱口令
4.客户端验证码爆破
pikachu验证码绕过(on client)
前端输入错误的验证码会提示验证码错误
BP抓包先输入任意用户名密码正确的验证码登录试试果然失败
不填写验证码字段只修改用户名和密码依然是用户名或密码不存在并没有提示验证码错误证明它只是一个前端绕过
JS绕过的逻辑在这里
<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>
可以判断虽然验证码被提交但是后台并没有验证。这个验证码框是通过JavaScript实现的对于不懂安全的人来说可以起到一定的防范作用。但对于知道这个原理的人来说形同虚设。
接下来就与基于表单的流程一样发送数据包到Intruder
中选用Cluster bomb
模式修改变量因为验证码后台并不校验没有用所以只用选择用户名与密码。
5.服务端验证码复用
和上面一样的思路但是这次提示验证码不能为空
随机输入一个验证码提示错误
很遗憾它是一个服务端的验证码检测
从表面上看没有问题但是我们还需要对验证码是否在后台过期进行进一步验证。首先先点击验证码获取一个新的验证码
然后返回数据包中将正确的验证码输入。点击运行提示用户名和密码不正确。为了验证验证码是否一致有效我们修改用户名和密码验证码不变点击运行结果一样。说明验证码可以重复利用
继续将数据包发送到Intruder
设置变量用户名和密码验证码则输入正确的验证码不设置变量。输入字典进行破解。
6.BP验证码识别
面对一些简单的网站在用户名、密码字典数据完善的前提下使用上面的步骤进行密码爆破的几率很高
但是针对一些包含验证码的网站我们需要多一步识别验证码的操作然后在 Payloads 功能标签下将图片识别结果设置到参数中去
这里推荐一个 BP 插件「 captcha-killer
」
注意captcha-killer本身无法识别验证码它专注于对各种验证码识别接口的调用例如对于百度云验证码识别接口的调用
这里给出教程大家自行探索