共计 1397 个字符,预计需要花费 4 分钟才能阅读完成。
背景痛点
在现代 API 开发中,Token(如 JWT、OAuth Token)是身份验证的核心机制。但 Token 传输过程中常面临以下问题:

- 明文传输风险:部分 API 仍通过 URL 参数或未加密的 Header 传递 Token
- 重放攻击:截获的 Token 可能被恶意复用
- 缺乏时效性检查:过期 Token 未及时失效
技术选型:为什么选择 Burp Suite?
对比常见抓包工具:
- Fiddler:
- 优点:轻量级,适合 HTTP/HTTPS 调试
-
缺点:缺乏安全测试专用功能(如主动扫描)
-
Wireshark:
- 优点:支持全协议栈抓包
-
缺点:操作复杂,需手动解析 HTTP 层
-
Burp Suite 优势:
- 专为 Web 安全测试设计
- 自动解码常见 Token 格式(JWT 等)
- 支持拦截修改和重放请求
核心实现步骤
1. 环境配置
- 下载 Burp Suite Community/Professional 版
- 配置浏览器代理(默认 127.0.0.1:8080)
- 安装 CA 证书(HTTPS 流量解密必需)
2. 捕获 Token 流量
- 开启 Proxy → Intercept 功能
- 在目标应用触发 API 请求
- 观察拦截到的请求头(通常含
Authorization: Bearer <token>)
3. Token 分析技巧
- 使用 Decoder 模块自动解析 JWT:
Header: {"alg":"HS256","typ":"JWT"} Payload: {"user_id":123,"exp":1735689600} - 通过 Repeater 模块重放修改后的 Token
代码示例:自动化解析
import requests
from jwt import decode # pip install pyjwt
# 从 Burp 导出的请求文件中提取 Token
def extract_token(har_file):
with open(har_file) as f:
data = json.load(f)
for entry in data['log']['entries']:
headers = entry['request']['headers']
for h in headers:
if h['name'].lower() == 'authorization':
return h['value'].split(' ')[1]
# 解码 JWT 示例
token = extract_token('api_traffic.har')
decoded = decode(token, options={"verify_signature": False})
print(f"Token 内容: {decoded}")
安全风险与防护
常见风险
- 中间人攻击:未使用 HTTPS 或证书校验不严格
- Token 泄露:日志 / 浏览器历史记录残留
- 弱加密算法:使用 HS256 而非 RS256
防护建议
- 强制 HTTPS 并启用 HSTS
- 设置合理的 Token 过期时间(如 30 分钟)
- 使用
HttpOnly+Secure的 Cookie 存储
避坑指南
- 证书错误:确保安装 Burp 的 CA 证书到 ” 受信任的根证书 ”
- 抓不到包:检查防火墙 / 杀毒软件拦截
- 乱码问题:在 Proxy → Options 启用 ”Auto-decode”
实践建议
尝试以下扩展练习:
- 修改 Token 中的 user_id 尝试越权访问
- 测试过期 Token 是否仍可访问
- 使用 Burp Scanner 自动检测 Token 相关漏洞
通过 Burp Suite 的深度使用,开发者可以系统性地提升 API 安全防护能力。建议在实际项目中建立定期的 Token 安全审计流程。
正文完
发表至: 网络安全
近一天内
