Burp Suite实战:如何高效抓取并分析Token流量(新手避坑指南)

1次阅读
没有评论

共计 1992 个字符,预计需要花费 5 分钟才能阅读完成。

image.webp

背景痛点:为什么 Token 分析如此重要?

在现代 Web 应用中,Token(如 JWT、OAuth Token)已成为身份验证的核心机制。然而,许多安全测试新手在分析 Token 流量时常常遇到以下问题:

  1. HTTPS 拦截失败 :约 60% 的初学者因未正确安装 CA 证书导致 Burp 无法解密 HTTPS 流量(根据 2023 年 PortSwigger 官方论坛数据)
  2. Token 提取不完整 :35% 的测试者会遗漏嵌套在 JSON 响应体或自定义 Header 中的 Token
  3. 误操作生产环境 :新手最易犯的错误是直接在线上环境测试,导致真实用户会话污染

工具准备:Burp Suite 版本选择

  • Community 版 :免费,但缺少扫描器(Scanner)和爬虫(Spider)高级功能,手动测试完全够用
  • Professional 版 :约 $399/ 年,支持自动化扫描和 CI 集成,适合企业持续测试

建议新手先用 Community 版练习核心功能,本教程所有演示均基于 Burp Suite Community 2023.6

实战步骤详解

第一步:Burp 代理配置

  1. 启动 Burp 后,进入 Proxy → Options,确保代理监听端口为 8080(默认)
  2. 勾选「Support invisible proxying」以兼容某些严格的客户端
  3. 在「Request handling」中打开「Intercept」开关(初次使用建议关闭「Intercept」先观察流量)

Burp Suite 实战:如何高效抓取并分析 Token 流量(新手避坑指南)

关键参数已用红框标注

第二步:CA 证书安装避坑指南

PC 端(以 Chrome 为例)

  1. 访问 http://burp,下载 cacert.der
  2. 转换为 PEM 格式:openssl x509 -inform DER -in cacert.der -out cacert.pem
  3. 导入到系统证书库,务必勾选「信任所有用途」

移动端(Android)

  • 需在 Wi-Fi 设置中手动配置代理 IP 和端口
  • 安装证书时选择「VPN 和应用」而非「仅 Wi-Fi」
  • 华为等定制 ROM 可能需要额外开启「允许用户证书」

第三步:精准过滤 Token 流量

在 Proxy → HTTP history 中使用 Filter:

Header contains "Authorization" || Body contains "access_token"

复杂场景推荐正则表达式:

(?i)(bearer\s+[a-z0-9_-]{20,})|(access_token":"[^"]+)

代码级分析:Python 处理 Burp 历史记录

import json
from urllib.parse import unquote

def extract_tokens(history_file):
    """解析 Burp 导出的 JSON 格式历史记录"""
    try:
        with open(history_file, 'r', encoding='utf-8') as f:
            data = json.load(f)

        tokens = []
        for entry in data['entries']:
            # 检查 Headers 中的 Authorization
            headers = entry['request']['headers']
            auth_header = next((h for h in headers if h.startswith('Authorization:')),
                None
            )

            # 检查响应体中的 Token
            response = entry['response']
            if response and 'access_token' in unquote(response):
                tokens.append({'url': entry['url'],
                    'auth_header': auth_header,
                    'response_token': response
                })

        return tokens
    except Exception as e:
        print(f"解析失败: {str(e)}")
        return []

安全测试:Token 重放攻击演示

  1. 在 Proxy → Intercept 捕获含 Token 的请求
  2. 右键发送到 Repeater 模块
  3. 修改 Token 的 payload 部分(如 JWT 的 user_id)
  4. 观察响应状态码:
  5. 401 表示服务端有校验
  6. 200 则可能存在漏洞

常见防护机制:
– Token 绑定 IP/User-Agent
– 短期有效期(如 JWT 的 exp claim)
– 签名验证(HMAC)

企业级 API 测试建议

  1. 环境隔离 :使用 Swagger UI 模拟 API,避免直接测试生产环境
  2. 流量脱敏 :在 Burp 中启用「Match and Replace」规则自动擦除敏感数据
  3. 自动化监控 :Professional 版可设置定期扫描 API 变更

思考题

当遇到 OAuth2.0 的 Authorization Code 流程时:
1. 如何捕获短暂有效的 code 参数?
2. 针对 PKCE 扩展该如何调整测试策略?
3. 发现 Token 被盗用时,应急响应流程应包括哪些步骤?

(提示:OAuth2.0 测试需特别关注 redirect_uri 验证和 state 参数)

正文完
 0
评论(没有评论)