共计 1915 个字符,预计需要花费 5 分钟才能阅读完成。
背景痛点
在 API 开发和调试中,Token 的生成、传递和验证是关键环节。传统抓包工具如 Fiddler 或浏览器开发者工具在 Token 调试中存在明显不足:
- 请求遗漏 :自动跳转的 302 请求容易被忽略
- HTTPS 盲区 :部分工具无法直接解密加密流量
- 分析低效 :缺乏针对 Token 请求的快速过滤机制
- 上下文缺失 :难以关联多个相关请求(如 /auth 和 /api)
Burp Suite 核心功能简介
Burp Suite 作为专业 Web 安全测试工具,提供了一套完整的解决方案:
- Proxy 模块 :实时拦截和修改 HTTP/ S 请求
- Repeater 模块 :重复发送并微调特定请求
- Intruder 模块 :自动化参数爆破测试
- Decoder 模块 :Base64/JWT 等 Token 格式解析
- Comparer 模块 :差异对比不同响应
详细配置步骤
代理设置与证书安装
- 启动 Burp Suite 后,在 Proxy → Options 中确认监听端口(默认 8080)
- 在浏览器或系统设置中配置 HTTP 代理为 127.0.0.1:8080
- 访问 http://burp 下载 CA 证书
- 将证书安装到系统信任存储(关键步骤!否则无法解密 HTTPS)

高效过滤 Token 请求
使用 Proxy → HTTP history 中的过滤栏:
# 按 URL 路径过滤
url.indexOf("/oauth/token") > -1
# 按 Header 过滤
requestHeaders.indexOf("Authorization:") > -1
# 组合过滤条件
(url.indexOf("api") > -1) && (requestHeaders.indexOf("Bearer") > -1)
HTTPS 流量解密
- 确保证书已正确安装且被系统信任
- 在 Proxy → Options 勾选 ”Support invisible proxying”
- 遇到异常时检查浏览器证书错误提示
- 对于移动端设备,需额外安装证书到设备
实战案例:OAuth2.0 流程分析
以 GitHub OAuth 为例:
-
授权请求 :
GET /login/oauth/authorize?client_id=xxx&redirect_uri=yyy -
Token 获取 (关键步骤):
POST /login/oauth/access_token Content-Type: application/json { "client_id": "xxx", "client_secret": "yyy", "code": "zzz" } -
API 调用 :
GET /api/user Authorization: Bearer ghp_AbCdEf...
使用 Repeater 模块可以:
– 修改 Token 观察 401 响应
– 测试过期 Token 的刷新流程
– 验证 scope 权限限制
避坑指南
- 证书问题 :
- macOS 可能需要钥匙串手动设置信任
-
Android 7+ 需要修改网络安全配置
-
抓包漏失 :
- 关闭浏览器缓存(DevTools → Network → Disable cache)
-
检查 Proxy → Intercept 是否误开启
-
乱码响应 :
- 在 Proxy → Options 启用 ”Automatically update Content-Length”
- 使用 Decoder 模块转换编码
安全考量
- 测试结束后及时关闭代理,避免隐私泄露
- 不要在生产环境使用 Burp Suite
- 定期删除历史记录(Project → Delete items)
- 敏感数据使用 ”Find Comments” 功能手动审查
自动化分析示例
用 Python 解析 Burp 导出的 JSON 日志:
import json
with open('burp_log.json') as f:
data = json.load(f)
tokens = []
for entry in data['entries']:
request = entry['request']
if 'Bearer' in request['headers'].get('Authorization', ''):
token = request['headers']['Authorization'].split(' ')[1]
tokens.append({'url': request['url'],
'token': token,
'timestamp': entry['startedDateTime']
})
print(f"Found {len(tokens)} tokenized requests")
下一步建议
尝试用 Burp Suite 分析你项目的 Token 流程:
1. 记录登录过程中的所有请求
2. 定位 Token 生成接口
3. 测试修改 Token 各部分的影响
4. 验证 Token 过期逻辑
通过这种深度分析,你可能会发现意料之外的安全边界或优化空间。
提示:遇到复杂场景时,可以结合 Logger++ 等 Burp 插件增强日志能力。
正文完
