Burp Suite实战:如何高效抓取和调试Token请求

1次阅读
没有评论

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

image.webp

背景痛点

在 API 开发和调试中,Token 的生成、传递和验证是关键环节。传统抓包工具如 Fiddler 或浏览器开发者工具在 Token 调试中存在明显不足:

  • 请求遗漏 :自动跳转的 302 请求容易被忽略
  • HTTPS 盲区 :部分工具无法直接解密加密流量
  • 分析低效 :缺乏针对 Token 请求的快速过滤机制
  • 上下文缺失 :难以关联多个相关请求(如 /auth 和 /api)

Burp Suite 核心功能简介

Burp Suite 作为专业 Web 安全测试工具,提供了一套完整的解决方案:

  1. Proxy 模块 :实时拦截和修改 HTTP/ S 请求
  2. Repeater 模块 :重复发送并微调特定请求
  3. Intruder 模块 :自动化参数爆破测试
  4. Decoder 模块 :Base64/JWT 等 Token 格式解析
  5. Comparer 模块 :差异对比不同响应

详细配置步骤

代理设置与证书安装

  1. 启动 Burp Suite 后,在 Proxy → Options 中确认监听端口(默认 8080)
  2. 在浏览器或系统设置中配置 HTTP 代理为 127.0.0.1:8080
  3. 访问 http://burp 下载 CA 证书
  4. 将证书安装到系统信任存储(关键步骤!否则无法解密 HTTPS)

Burp Suite 实战:如何高效抓取和调试 Token 请求

高效过滤 Token 请求

使用 Proxy → HTTP history 中的过滤栏:

# 按 URL 路径过滤
url.indexOf("/oauth/token") > -1

# 按 Header 过滤
requestHeaders.indexOf("Authorization:") > -1

# 组合过滤条件
(url.indexOf("api") > -1) && (requestHeaders.indexOf("Bearer") > -1)

HTTPS 流量解密

  1. 确保证书已正确安装且被系统信任
  2. 在 Proxy → Options 勾选 ”Support invisible proxying”
  3. 遇到异常时检查浏览器证书错误提示
  4. 对于移动端设备,需额外安装证书到设备

实战案例:OAuth2.0 流程分析

以 GitHub OAuth 为例:

  1. 授权请求 :

    GET /login/oauth/authorize?client_id=xxx&redirect_uri=yyy

  2. Token 获取 (关键步骤):

    POST /login/oauth/access_token
    Content-Type: application/json
    
    {
      "client_id": "xxx",
      "client_secret": "yyy",
      "code": "zzz"
    }

  3. API 调用 :

    GET /api/user
    Authorization: Bearer ghp_AbCdEf...

使用 Repeater 模块可以:
– 修改 Token 观察 401 响应
– 测试过期 Token 的刷新流程
– 验证 scope 权限限制

避坑指南

  1. 证书问题 :
  2. macOS 可能需要钥匙串手动设置信任
  3. Android 7+ 需要修改网络安全配置

  4. 抓包漏失 :

  5. 关闭浏览器缓存(DevTools → Network → Disable cache)
  6. 检查 Proxy → Intercept 是否误开启

  7. 乱码响应 :

  8. 在 Proxy → Options 启用 ”Automatically update Content-Length”
  9. 使用 Decoder 模块转换编码

安全考量

  1. 测试结束后及时关闭代理,避免隐私泄露
  2. 不要在生产环境使用 Burp Suite
  3. 定期删除历史记录(Project → Delete items)
  4. 敏感数据使用 ”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 插件增强日志能力。

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