首页 渗透工具 正文
  • 本文约2674字,阅读需13分钟
  • 70
  • 0

BurpSuite API 测试插件

摘要

这是一个为BurpSuite设计的API测试插件,可以自动解析OpenAPI/Swagger文档并测试其中的API接口。 ? 功能特性 ? 智能解析: 支持OpenAPI 2.0/3.0和Swagger JSON/YAML格式 ? 自动测试: 自动发送GET和POST请求(过滤PUT和DELETE请求) ? 结果展示: 以表格形式展示测试结果,支持排序功能 ...

这是一个为BurpSuite设计的API测试插件,可以自动解析OpenAPI/Swagger文档并测试其中的API接口。

🌟 功能特性

  • 🔍 智能解析: 支持OpenAPI 2.0/3.0和Swagger JSON/YAML格式
  • 🚀 自动测试: 自动发送GET和POST请求(过滤PUT和DELETE请求)
  • 📊 结果展示: 以表格形式展示测试结果,支持排序功能
  • 🔗 BurpSuite集成: 测试结果自动记录到BurpSuite历史记录
  • 🖱️ 右键菜单: 支持Send to Repeater和Copy URL功能
  • ⏹️ 停止控制: 可随时停止正在进行的测试
  • 📈 进度显示: 准确的进度条和状态显示
  • 📋 批量请求头: 支持输入自定义请求头,可选择性启用
  • 🎯 参数生成: 自动生成示例参数值进行测试
  • 并发控制: 合理控制请求频率,避免对目标服务器造成压力

📦 安装方法

方法一:使用预编译JAR包

  1. 下载 target/api-tester-1.0.0.jar文件
  2. 在BurpSuite中,进入 Extender -> Extensions
  3. 点击 Add 按钮
  4. 选择 Java 作为扩展类型
  5. 选择下载的JAR文件
  6. 点击 Next 完成安装

方法二:从源码编译

Windows用户:

build.bat

Linux/Mac用户:

chmod +x build.sh
./build.sh

手动构建:

mvn clean package

🚀 使用方法

界面布局

输入字段说明

API文档地址

  • 用途: 用于获取和解析OpenAPI/Swagger文档
  • 格式: 完整的URL地址
  • 示例:
    • https://xxx.com/api.json
    • https://api.example.com/swagger.json
    • https://petstore.swagger.io/v2/swagger.json

请求Host地址

  • 用途: 实际发送API请求时使用的协议和Host
  • 格式: 协议 + 主机名 + 端口(可选)
  • 示例:
    • https://xxx.com
    • https://api.example.com
    • http://localhost:8080

批量请求头

  • 用途: 为所有API请求添加自定义HTTP请求头
  • 格式: 每行一个请求头,格式为 Header-Name: Header-Value
  • 示例:
    User-Agent: PostmanRuntime/7.46.1
    Authorization: YWRtaW4=
    Postman-Token: a9ca212d-e1ae-4291-8ba2-95d9db439a15
    X-API-Key: your-api-key-here
    Content-Type: application/json
  • 使用控制: 通过勾选框控制是否启用自定义请求头
  • 优先级: 自定义请求头会覆盖默认请求头(除Host头外)

基本使用步骤

  1. 安装插件后,在BurpSuite中找到 API 测试工具 标签页
  2. API文档地址 输入框中输入OpenAPI/Swagger文档的完整URL
  3. 请求Host地址 输入框中输入实际要测试的API服务器地址
  4. (可选)批量请求头 区域输入需要的自定义请求头
  5. (可选) 勾选或取消勾选 使用上述请求头 来控制是否启用自定义请求头
  6. 点击 开始测试 按钮
  7. 插件会自动解析API文档并开始测试
  8. 测试结果会实时显示在下方的表格中,包含自定义请求头信息
  9. 可随时点击 停止测试 按钮终止测试
  10. 测试完成后,所有请求都会记录到BurpSuite的历史记录中

📊 工作流程

解析阶段

API文档地址: https://xxx.com/api.json
↓
插件从此地址下载并解析OpenAPI文档
↓
获取所有API接口的路径信息,如: /api-v2/account/list

请求阶段

解析得到的路径: /api-v2/account/list
请求Host地址: https://xxx.com
↓
组合成实际请求URL: https://xxx.com/api-v2/account/list
↓
发送实际的API请求

📋 功能详解

批量请求头功能

功能介绍

批量请求头功能允许您为所有API请求添加自定义的HTTP请求头,这对于需要认证、特殊User-Agent或其他自定义头的API测试非常有用。

使用方法

  1. 输入请求头: 在"批量请求头"文本区域中,每行输入一个请求头
  2. 格式要求: 每行格式为 Header-Name: Header-Value
  3. 启用控制: 勾选"使用上述请求头"复选框来启用自定义请求头
  4. 测试应用: 启用后,所有API测试请求都会携带这些请求头

示例场景

API认证:

Authorization: Bearer your-jwt-token
X-API-Key: your-api-key-12345

模拟特定客户端:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
X-Requested-With: XMLHttpRequest
Referer: https://example.com

调试和追踪:

X-Debug: true
X-Trace-ID: test-session-001
X-Request-Source: burp-api-tester

注意事项

  • Host头保护: 系统会自动忽略自定义的Host头,避免请求错误
  • 优先级: 自定义请求头会覆盖默认的User-Agent和Accept头
  • 实时切换: 可以随时勾选/取消勾选来启用/禁用自定义请求头
  • 格式检查: 系统会自动过滤空行和格式不正确的行

支持的API文档格式

  • OpenAPI 3.0: JSON和YAML格式
  • OpenAPI 2.0 (Swagger): JSON和YAML格式
  • 自动检测文档格式并使用相应的解析器

支持的HTTP方法

  • GET: 自动测试,生成查询参数
  • POST: 自动测试,生成请求体和参数
  • PUT: 跳过测试(避免修改数据)
  • DELETE: 跳过测试(避免删除数据)
  • PATCH: 跳过测试(避免修改数据)

参数生成规则

路径参数(Path Parameters):

  • 字符串类型:生成 "test"
  • 数字类型:生成 1
  • 布尔类型:生成 true

查询参数(Query Parameters):

  • 根据参数类型自动生成示例值
  • 支持字符串、数字、布尔值、数组

请求体(Request Body):

  • 自动解析JSON Schema
  • 生成符合结构的示例数据
  • 支持嵌套对象和数组

📊 结果展示功能

表格列说明

列名 说明
URL 完整的请求URL(包含路径参数)
请求方式 HTTP方法(GET/POST)
请求参数 自定义请求头、路径参数、查询参数和请求体的详情
状态码 HTTP响应状态码
响应时间(ms) 请求响应时间,单位毫秒
响应结果 服务器返回的响应内容(截取前200字符)

表格排序功能

排序规则

  • 状态码列: 数字排序(200 < 404 < 500)
  • 响应时间列: 数字排序(5ms < 10ms < 100ms)
  • 其他列: 字符串排序

使用方法

  1. 点击列头: 点击任意列头进行排序
  2. 升序/降序: 再次点击同一列头切换排序方向
  3. 多列排序: 按住Ctrl键点击多个列头

右键菜单功能

选项 功能 说明
Send to Repeater 发送到Repeater 构建完整HTTP请求并发送到Repeater模块
Copy URL 复制URL 复制选中行的完整URL到系统剪贴板

使用方法

  1. 在测试结果表格中选择任意行
  2. 右键点击选中行
  3. 选择相应的菜单项

自动构建请求示例

GET请求:

GET /api-v2/users HTTP/1.1
Host: api.example.com
User-Agent: BurpSuite-API-Tester/1.0
Accept: application/json, */*

POST请求:

POST /api-v2/users HTTP/1.1
Host: api.example.com
User-Agent: BurpSuite-API-Tester/1.0
Accept: application/json, */*
Content-Type: application/json
Content-Length: 45

{"test":"value","name":"example","id":123}

状态码含义

  • 200-299: 成功响应
  • 400-499: 客户端错误(参数问题、认证问题等)
  • 500-599: 服务器错误
  • -1: 网络错误或连接失败

🎯 使用场景

企业开发环境

  • 文档服务器: https://docs.company.com/api.json
  • 测试环境: https://test-api.company.com
  • 生产环境: https://api.company.com

本地开发测试

  • 文档来源: https://api.example.com/swagger.json
  • 本地服务: http://localhost:3000
  • 测试不同版本: http://localhost:8080

跨环境测试

  • 使用线上文档结构
  • 测试不同环境的API实现
  • 验证API兼容性

📖 示例

示例API文档地址

公开测试API:

  • Swagger Petstore: http://petstore.swagger.io/v2/swagger.json
  • JSONPlaceholder: https://jsonplaceholder.typicode.com/
  • ReqRes: https://reqres.in/

常见路径格式:

  • /api-docs - Spring Boot默认路径
  • /swagger.json - Swagger JSON格式
  • /swagger.yaml - Swagger YAML格式
  • /v2/api-docs - Swagger 2.0格式
  • /v3/api-docs - OpenAPI 3.0格式
  • /openapi.json - OpenAPI JSON格式

使用示例

示例1: 标准情况

API文档地址: https://api.example.com/swagger.json
请求Host地址: https://api.example.com
解析得到路径: /v1/users
最终请求URL: https://api.example.com/v1/users

示例2: 不同环境

API文档地址: https://api-docs.example.com/swagger.json  (文档服务器)
请求Host地址: https://api-prod.example.com             (生产环境API)
解析得到路径: /v1/users
最终请求URL: https://api-prod.example.com/v1/users

示例3: 本地开发

API文档地址: https://api.example.com/swagger.json      (线上文档)
请求Host地址: http://localhost:8080                    (本地开发)
解析得到路径: /v1/users
最终请求URL: http://localhost:8080/v1/users

🔧 高级配置

批量请求头配置

插件提供了图形化的批量请求头配置功能,无需修改代码:

通过界面配置:

  1. 在"批量请求头"文本区域输入所需的请求头
  2. 勾选"使用上述请求头"复选框
  3. 开始测试时会自动应用这些请求头

常用请求头模板:

# 基础认证
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
X-API-Key: your-api-key-here

# 内容类型
Content-Type: application/json
Accept: application/json

# 用户代理
User-Agent: CustomClient/1.0

# 调试头
X-Debug: true
X-Environment: testing

修改请求间隔

ApiTesterPanel.java 中修改:

Thread.sleep(500); // 改为你需要的间隔时间(毫秒)

代码级自定义请求头(高级用户)

ApiRequester.java 中硬编码添加:

connection.setRequestProperty("Authorization", "Bearer your-token");
connection.setRequestProperty("X-API-Key", "your-api-key");

添加代理支持

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("127.0.0.1", 8080));
HttpURLConnection connection = (HttpURLConnection) url.openConnection(proxy);

🛠️ 开发信息

技术栈

  • 开发语言: Java 11
  • 构建工具: Maven
  • 主要依赖:
    • BurpSuite Extender API
    • Jackson (JSON/YAML处理)
    • Swagger Parser
    • Apache HttpClient

源码结构

src/main/java/burp/
├── BurpExtender.java        # 插件入口
├── ApiTesterPanel.java      # 主界面
├── OpenApiParser.java       # API文档解析器
├── ApiRequester.java        # HTTP请求发送器
├── ApiEndpoint.java         # API接口数据模型
└── ApiTestResult.java       # 测试结果数据模型

编译要求

  • Java 11+
  • Maven 3.6+
  • BurpSuite Professional

⚠️ 注意事项

安全注意事项

  1. 生产环境警告: 插件会发送真实的HTTP请求,请勿在生产环境使用
  2. 数据安全: 测试数据可能被发送到目标服务器,注意敏感信息
  3. 频率控制: 插件已内置请求间隔,避免对服务器造成压力
  4. 权限检查: 确保有权限测试目标API接口

使用建议

  1. 请确保目标API服务器允许自动化测试
  2. 插件会生成示例数据进行测试,请注意对生产环境的影响
  3. 建议在测试环境中使用,避免对生产数据造成影响
  4. 插件会控制请求频率(每个请求间隔500ms),避免对服务器造成过大压力

🔍 常见问题排查

1. 插件加载失败

  • 检查Java版本(需要Java 11+)
  • 查看BurpSuite错误标签页的详细错误信息
  • 确保JAR文件完整且未损坏

2. API文档解析失败

无法解析OpenAPI文档

解决方法:

  • 检查URL是否正确可访问
  • 确认文档格式为有效的JSON或YAML
  • 检查网络连接和防火墙设置

3. 接口测试失败

连接超时 / 网络错误

解决方法:

  • 检查目标服务器是否在线
  • 确认API接口地址正确
  • 检查是否需要认证或特殊请求头

4. 部分接口未测试

  • 插件只测试GET和POST方法
  • 检查API文档中是否包含这些方法
  • 某些接口可能需要特殊参数或认证

5. 表格排序问题

  • 确保选择正确的行进行右键操作
  • 排序后的右键菜单功能会自动处理行索引转换

6. 进度条显示问题

  • 进度条基于实际测试的接口数量(GET/POST)
  • 跳过的接口(PUT/DELETE/PATCH)不计入进度

7. Logger记录问题

  • 所有插件发送的请求都会自动记录到BurpSuite的HTTP History中
  • 如果没有看到记录,请检查BurpSuite的Logger设置
  • 请求也会同时记录到Site Map中

🐛 调试和技术支持

启用详细日志

在BurpSuite的 Extensions -> Errors 标签页可以查看详细错误信息。

技术支持

如遇到问题,请提供以下信息:

  • BurpSuite版本
  • Java版本
  • 错误信息截图
  • API文档示例URL(如果可公开)

📄 许可证

本项目采用Apache License 2.0许可证。

🤝 贡献

欢迎提交Issue和Pull Request来改进这个插件!


📁 文件信息

  • 插件文件: target/api-tester-1.0.0.jar
  • 文件大小: \~12.5 MB
  • Java要求: Java 11+
  • 兼容性: BurpSuite Professional
  • 最新功能: 批量请求头支持

🎉 最新更新 - 批量请求头功能 + Logger记录修复

新增功能

  • 📋 批量请求头输入: 支持在界面中输入多行自定义请求头
  • ☑️ 可选启用: 通过勾选框控制是否使用自定义请求头
  • 🔄 实时切换: 可以随时启用或禁用自定义请求头
  • 🛡️ 智能保护: 自动过滤Host头,避免请求错误
  • 📊 完整记录: 自定义请求头会显示在测试结果中

🔧 修复内容

  • 📝 Logger记录: 修复了请求没有记录到BurpSuite Logger中的问题
  • 🔄 API优化: 使用BurpSuite的 makeHttpRequestAPI发送请求,确保自动记录
  • 📊 双重记录: 请求现在同时记录到Site Map和HTTP History中

🎯 使用场景

  • API认证: 添加Authorization、X-API-Key等认证头
  • 客户端模拟: 自定义User-Agent、Referer等头
  • 调试追踪: 添加X-Debug、X-Trace-ID等调试头
  • 环境标识: 添加X-Environment等环境标识头

现在您可以享受完整的API测试功能,包括智能解析、表格排序、右键菜单、进度控制、批量请求头等所有特性!

评论
博主关闭了评论
友情链接