BurpSuite新插件Api-Montoya
字数 1749 2025-08-22 12:22:54

BurpSuite Montoya API 插件开发指南

1. Montoya API 概述

PortSwigger 推出的 Montoya API 是 BurpSuite 的新插件 API,将逐步取代旧版插件系统。Montoya API 提供了更丰富的接口和功能,同时简化了插件开发过程。

主要优势

  • 更简洁的接口设计
  • 更丰富的功能支持
  • 更简单的开发流程
  • 更好的文档支持

2. 核心接口与类

2.1 基础接口

BurpExtension

  • 所有插件必须实现的接口
  • 包含插件初始化方法 initialize(MontoyaApi api)
  • Burp 会自动检测并加载所有实现了该接口的类

MontoyaApi

  • Burp 通过该接口向插件提供执行方法
  • 内置访问 Burp 各个模块的方法

2.2 主要功能模块

BurpSuite 相关功能

burp.api.montoya.burpsuite.BurpSuite
  • commandLineArguments(): 获取启动时传递给 Burp 的命令行参数
  • exportProjectOptionsAsJson(String... paths): 以 JSON 格式导出当前项目级配置
  • exportUserOptionsAsJson(String... paths): 以 JSON 格式导出当前用户级配置
  • shutdown(ShutdownOptions... options): 以编程方式关闭 Burp
  • taskExecutionEngine(): 访问任务执行引擎功能

Collaborator 模块

burp.api.montoya.collaborator
  • Collaborator: 提供对 Burp Collaborator 模块的访问
  • CollaboratorClient: 生成 Collaborator payload 并获取交互结果
  • CollaboratorPayload: Collaborator payload 设置操作
  • CollaboratorPayloadGenerator: Collaborator payload 生成操作

比较功能

burp.api.montoya.comparer.Comparer

提供 Burp Comparer 的比较功能

插件相关

burp.api.montoya.extension.Extension

提供对插件相关属性或操作的访问功能

HTTP 功能

burp.api.montoya.http
  • Http: 提供对 HTTP 请求与响应的访问
  • HttpMode: 定义发送 HTTP 请求的模式

HTTP 处理器

burp.api.montoya.http.handler.HttpHandler

插件可实现此接口并通过 Http.registerHttpHandler 注册 HTTP 处理程序

HTTP 消息

burp.api.montoya.http.message
  • HttpMessage: 检索 HttpRequest 和 HttpResponse 共享的公共信息
  • HttpParameter: 处理 HTTP 参数
  • HttpRequest: 检索和修改 HTTP 请求
  • HttpResponse: 检索和修改 HTTP 响应

UI 相关

burp.api.montoya.ui
  • Selection: 提供用户界面选择相关功能
  • Theme: 包含 Burp 可用主题
  • UserInterface: 访问各种用户界面相关功能

日志

burp.api.montoya.logging.Logging

提供对日志和事件的访问功能

3. 开发环境搭建

3.1 项目创建

可以使用 Maven 或 Gradle 构建项目

Maven 依赖配置

<dependency>
    <groupId>net.portswigger.burp.extensions</groupId>
    <artifactId>montoya-api</artifactId>
    <version>2023.12.1</version>
</dependency>

4. 基础插件开发

4.1 基本结构

package org.example;

import burp.api.montoya.BurpExtension;
import burp.api.montoya.MontoyaApi;
import burp.api.montoya.logging.Logging;

public class MyExtension implements BurpExtension {
    public MontoyaApi api;
    
    @Override
    public void initialize(MontoyaApi api) {
        this.api = api;
        // 设置插件名称
        api.extension().setName("MyExtension1.0");
        
        // 日志输出
        Logging log = api.logging();
        log.logToOutput("this is a test");
        log.logToOutput("by ccc");
    }
}

4.2 添加 UI 组件

创建 Tab 页

// 设置tab页面
JPanel Mytab = new JPanel(new BorderLayout()); // 使用BorderLayout布局管理器

// 创建HTTP请求编辑器(只读)
HttpRequestEditor myRequestEditor = api.userInterface().createHttpRequestEditor(READ_ONLY);

// 将编辑器添加到Tab页中心
Mytab.add(myRequestEditor.uiComponent(), BorderLayout.CENTER);

// 注册Tab页
api.userInterface().registerSuiteTab("test", Mytab);

// 添加文本区域和滚动条
JTextArea resultArea = new JTextArea(10, 30);
JScrollPane scrollPane = new JScrollPane(resultArea);
Mytab.add(scrollPane, BorderLayout.NORTH);

4.3 添加上下文菜单

public List<Component> provideMenuItems(ContextMenuEvent event) {
    List<Component> listMenuItems = new ArrayList<>();
    
    JMenuItem TestJmenu = new JMenuItem("Test");
    TestJmenu.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            SwingUtilities.invokeLater(() -> {
                resultArea.append("baidu test\n");
                resultArea.setCaretPosition(resultArea.getDocument().getLength());
            });
        }
    });
    
    listMenuItems.add(TestJmenu);
    return listMenuItems;
}

5. 进阶开发建议

  1. 查阅官方文档:

  2. 参考源码:

  3. 使用辅助工具:

    • 可以将代码片段提供给AI编码助手(如通义灵码)获取更具体的实现建议

6. 插件打包与安装

  1. 构建项目生成JAR文件
  2. 在BurpSuite中通过Extender选项卡安装插件
  3. 查看输出日志确认插件加载情况

7. 最佳实践

  1. 线程安全: 使用 SwingUtilities.invokeLater() 确保UI操作在事件分发线程执行
  2. 错误处理: 妥善处理可能出现的异常
  3. 性能优化: 避免在HTTP处理器中执行耗时操作
  4. 资源管理: 及时释放不再使用的资源

通过以上指南,您可以开始基于Montoya API开发功能丰富的BurpSuite插件。随着对API的熟悉,可以逐步实现更复杂的功能,如自定义扫描检查、自动化测试流程等。

BurpSuite Montoya API 插件开发指南 1. Montoya API 概述 PortSwigger 推出的 Montoya API 是 BurpSuite 的新插件 API,将逐步取代旧版插件系统。Montoya API 提供了更丰富的接口和功能,同时简化了插件开发过程。 主要优势 更简洁的接口设计 更丰富的功能支持 更简单的开发流程 更好的文档支持 2. 核心接口与类 2.1 基础接口 BurpExtension 所有插件必须实现的接口 包含插件初始化方法 initialize(MontoyaApi api) Burp 会自动检测并加载所有实现了该接口的类 MontoyaApi Burp 通过该接口向插件提供执行方法 内置访问 Burp 各个模块的方法 2.2 主要功能模块 BurpSuite 相关功能 commandLineArguments() : 获取启动时传递给 Burp 的命令行参数 exportProjectOptionsAsJson(String... paths) : 以 JSON 格式导出当前项目级配置 exportUserOptionsAsJson(String... paths) : 以 JSON 格式导出当前用户级配置 shutdown(ShutdownOptions... options) : 以编程方式关闭 Burp taskExecutionEngine() : 访问任务执行引擎功能 Collaborator 模块 Collaborator : 提供对 Burp Collaborator 模块的访问 CollaboratorClient : 生成 Collaborator payload 并获取交互结果 CollaboratorPayload : Collaborator payload 设置操作 CollaboratorPayloadGenerator : Collaborator payload 生成操作 比较功能 提供 Burp Comparer 的比较功能 插件相关 提供对插件相关属性或操作的访问功能 HTTP 功能 Http : 提供对 HTTP 请求与响应的访问 HttpMode : 定义发送 HTTP 请求的模式 HTTP 处理器 插件可实现此接口并通过 Http.registerHttpHandler 注册 HTTP 处理程序 HTTP 消息 HttpMessage : 检索 HttpRequest 和 HttpResponse 共享的公共信息 HttpParameter : 处理 HTTP 参数 HttpRequest : 检索和修改 HTTP 请求 HttpResponse : 检索和修改 HTTP 响应 UI 相关 Selection : 提供用户界面选择相关功能 Theme : 包含 Burp 可用主题 UserInterface : 访问各种用户界面相关功能 日志 提供对日志和事件的访问功能 3. 开发环境搭建 3.1 项目创建 可以使用 Maven 或 Gradle 构建项目 Maven 依赖配置 4. 基础插件开发 4.1 基本结构 4.2 添加 UI 组件 创建 Tab 页 4.3 添加上下文菜单 5. 进阶开发建议 查阅官方文档 : Montoya API Javadoc 参考源码 : GitHub 项目源码 使用辅助工具 : 可以将代码片段提供给AI编码助手(如通义灵码)获取更具体的实现建议 6. 插件打包与安装 构建项目生成JAR文件 在BurpSuite中通过Extender选项卡安装插件 查看输出日志确认插件加载情况 7. 最佳实践 线程安全 : 使用 SwingUtilities.invokeLater() 确保UI操作在事件分发线程执行 错误处理 : 妥善处理可能出现的异常 性能优化 : 避免在HTTP处理器中执行耗时操作 资源管理 : 及时释放不再使用的资源 通过以上指南,您可以开始基于Montoya API开发功能丰富的BurpSuite插件。随着对API的熟悉,可以逐步实现更复杂的功能,如自定义扫描检查、自动化测试流程等。