共计 1992 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点:为什么 Token 分析如此重要?
在现代 Web 应用中,Token(如 JWT、OAuth Token)已成为身份验证的核心机制。然而,许多安全测试新手在分析 Token 流量时常常遇到以下问题:
- HTTPS 拦截失败 :约 60% 的初学者因未正确安装 CA 证书导致 Burp 无法解密 HTTPS 流量(根据 2023 年 PortSwigger 官方论坛数据)
- Token 提取不完整 :35% 的测试者会遗漏嵌套在 JSON 响应体或自定义 Header 中的 Token
- 误操作生产环境 :新手最易犯的错误是直接在线上环境测试,导致真实用户会话污染
工具准备:Burp Suite 版本选择
- Community 版 :免费,但缺少扫描器(Scanner)和爬虫(Spider)高级功能,手动测试完全够用
- Professional 版 :约 $399/ 年,支持自动化扫描和 CI 集成,适合企业持续测试
建议新手先用 Community 版练习核心功能,本教程所有演示均基于 Burp Suite Community 2023.6
实战步骤详解
第一步:Burp 代理配置
- 启动 Burp 后,进入 Proxy → Options,确保代理监听端口为 8080(默认)
- 勾选「Support invisible proxying」以兼容某些严格的客户端
- 在「Request handling」中打开「Intercept」开关(初次使用建议关闭「Intercept」先观察流量)

关键参数已用红框标注
第二步:CA 证书安装避坑指南
PC 端(以 Chrome 为例)
- 访问 http://burp,下载 cacert.der
- 转换为 PEM 格式:
openssl x509 -inform DER -in cacert.der -out cacert.pem - 导入到系统证书库,务必勾选「信任所有用途」
移动端(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 重放攻击演示
- 在 Proxy → Intercept 捕获含 Token 的请求
- 右键发送到 Repeater 模块
- 修改 Token 的 payload 部分(如 JWT 的 user_id)
- 观察响应状态码:
- 401 表示服务端有校验
- 200 则可能存在漏洞
常见防护机制:
– Token 绑定 IP/User-Agent
– 短期有效期(如 JWT 的 exp claim)
– 签名验证(HMAC)
企业级 API 测试建议
- 环境隔离 :使用 Swagger UI 模拟 API,避免直接测试生产环境
- 流量脱敏 :在 Burp 中启用「Match and Replace」规则自动擦除敏感数据
- 自动化监控 :Professional 版可设置定期扫描 API 变更
思考题
当遇到 OAuth2.0 的 Authorization Code 流程时:
1. 如何捕获短暂有效的 code 参数?
2. 针对 PKCE 扩展该如何调整测试策略?
3. 发现 Token 被盗用时,应急响应流程应包括哪些步骤?
(提示:OAuth2.0 测试需特别关注 redirect_uri 验证和 state 参数)
正文完
发表至: 网络安全
近一天内
