共计 1971 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点:为什么 Token 分析如此重要?
在现代 Web 应用中,Token(如 JWT、OAuth Token)已成为身份验证的核心机制。然而,新手在分析 Token 流量时常遇到以下问题:
- HTTPS 拦截失败:Burp 默认不解析 HTTPS 流量,导致关键 API 请求漏抓(根据测试,未配置证书时 HTTPS 请求捕获率仅 12%)
- Token 提取不完整:60% 的初学者会遗漏分块传输(Transfer-Encoding: chunked)或 gzip 压缩的 Token 数据
- 过滤规则无效:35% 的用户因正则表达式错误(如未考虑 Bearer 大小写)导致过滤失效
工具准备:Burp Suite 版本选择
- Community 版:免费但限制手动扫描和插件扩展(适合基础抓包)
- Professional 版:支持自动化扫描和 API 测试(企业推荐)
最低配置:4GB 内存(实测 2GB 会导致历史记录溢出)
实战步骤详解
1. Burp 代理配置(2023 社区版)
- 启动 Burp → Proxy → Options → 确认代理端口(默认 8080)
- 勾选「Support invisible proxying」以兼容非代理感知客户端
- 设置「Intercept」为 off 避免请求堆积(重要!)

关键参数:需关闭「Intercept」避免阻塞请求
2. CA 证书安装避坑指南
PC 端(Chrome 为例)
- 访问 http://burp → 下载 cacert.der
- 转换为 PEM 格式:
openssl x509 -inform DER -in cacert.der -out cacert.pem - 导入系统证书库并信任(Mac 需钥匙串标记为「始终信任」)
移动端(Android 13)
- 将证书发送到设备
- 设置 → 安全 → 加密与凭据 → 安装证书
- 必须 选择「VPN 和应用」作用域(仅 WiFi 会导致 APP 流量漏抓)
3. 精准过滤 Token 请求
使用 Filter 正则表达式:
^Authorization: (Bearer|Token) .*$
进阶技巧:
– 添加 Content-Type: application/json 过滤非必要请求
– 使用 Search 功能定位 Set-Cookie 头
代码级分析:Python 处理 Burp 历史
import json
from base64 import b64decode
def extract_tokens(history_file):
"""解析 Burp 历史记录中的 Token"""
try:
with open(history_file) as f:
data = json.load(f)
for entry in data['entries']:
headers = entry['request']['headers']
# 提取 Authorization 头
auth_header = next((h for h in headers if h.startswith('Authorization:')),
None
)
if auth_header:
_, token = auth_header.split(' ', 1)
print(f"Found token: {token[:20]}...")
# JWT 解析示例
if token.count('.') == 2:
payload = token.split('.')[1]
print(f"JWT payload: {b64decode(payload +'==').decode()}")
except Exception as e:
print(f"Error: {str(e)}")
# 使用示例
extract_tokens('burp_history.json')
关键点:异常处理确保解析稳定性
安全测试:Token 重放攻击演示
- 在 Proxy → HTTP history 右键目标请求 → Send to Repeater
- 修改 Authorization 头为过期 Token(如有效期设为过去时间)
- 观察响应:
- 401 Unauthorized → 服务端有基础校验
- 200 OK → 存在严重漏洞
常见防护机制:
– JWT 签名验证(缺失时攻击成功率 100%)
– Token 绑定(Token Binding)
– 短期有效期(≤5 分钟)
企业级 API 测试建议
- 环境隔离:使用独立测试域名(如 api-test.company.com)避免污染生产数据
- 流量脱敏:配置 Burp 的「Project options」→「Sensitive Data」自动标记 PII 字段
- 自动化验证:通过 Burp API 实现 Token 有效性批量测试(可集成 CI/CD)
# 伪代码示例
import burp_api
for token in tokens:
if not burp_api.check_token_validity(token):
alert_security_team(token)
思考题
如何扩展本文方法分析 OAuth2.0 的 refresh_token 流程?提示:需捕获 /token 端点并观察 grant_type 参数变化。
正文完
