Burp Suite 介绍

Burp Suite是一款用于攻击和测试Web应用程序的集成平台,它包含了多种工具,如代理、重发器、扫描器、爬虫、Intruder、Repeater等,可以协同工作,共享信息,支持各种攻击和检测方法。

Burp Suite的插件是一种扩展Burp Suite功能的方式,可以通过Burp Extender模块来安装和管理。插件可以由社区用户创建和维护,也可以由自己编写。插件可以修改HTTP请求和响应,发送额外的HTTP请求,自定义Burp Suite的界面和功能,添加额外的扫描检查,访问Burp Suite的信息等。

在本文中,我们将介绍 Burp Suite 插件,并使用 IDEA 工具编写简单的自定义插件。

配置环境

首先我们需要安装 IDE 工具,可以下载 IntelliJ IDEAAtomNetbeansEclipse 等。

Java 环境

Java 环境我们将在后续文章中以使用 IDEA 工具编写为例介绍。 

Python 环境

Burp Suite 依赖 Jython 来支持 Python,需要下载 Jython 并配置 Burp Suite 位置。

在 Burp Suite 页面加载 Python 插件需要选择扩展类型为 Python 并指定 Python 插件文件。

API

Extender API:

Burp Suite 的 Extender API 是一套用于创建 Burp Suite 扩展的 Java 接口,它可以让攻击者使用自己或第三方的代码来扩展 Burp Suite 的功能,例如修改 HTTP 请求和响应、发送额外的 HTTP 请求、自定义Burp Suite 的界面和功能、添加额外的扫描检查,访问 Burp Suite 的信息等。

所有接口可以访问 Burp Suite 的官方文档查看。

Montoya API

Montoya AP I和 Extender API 都是用于创建 Burp Suite 扩展的 Java 接口,但是 Montoya API 是 Extender API 的升级版,它提供了更多的功能和优化,例如:

  • Montoya API 将Extender API 中的一些接口进行了分类和重构,使得扩展的开发更加清晰和方便。
  • Montoya API 增加了一些新的接口,如IBurpExtension、IExtensionStateListener、IExtensionHelpers等,可以让扩展更好地与 Burp Suite 的核心功能和状态进行交互。
  • Montoya API 支持使用 Maven 或 Gradle 来创建和构建扩展项目,可以方便地管理依赖和版本。

该 API 可以访问 Burp Suite 的官方文档查看。

BApp Store

BApp Store 包含由 Burp Suite 用户编写的 Burp 扩展,以扩展 Burp 的功能。

攻击者可以通过 Burp Extender 工具中的 BApp Store 功能直接在 Burp Suite 中安装。也可以访问 Burp Suite 提供的在线网站,以便离线安装到 Burp Suite 中。

插件编写

以使用 Java 语言编写为例,启动 IDEA 环境并创建一个名为”Burps”的新项目。

注意:需要将语言更改为 Kotlin 来支持。

接下来需要添加 Burp Suite 的接口,按住 CTRL+ALT+SHIFT+S 打开”项目结构”菜单并点击”+”号选择”From Maven…”:

搜索 “net.portswigger.burp.extender:burp-extender-api:2.1” 并安装:

点击”OK”按钮并将该库应用到创建的插件中:

接下来就需要编写代码了,首先需要创建名为”Burp”的新包。右键 src 目录,点击”New”按钮并选择”Package”以创建:

然后我们需要创建一个 Kotlin 的 Class 类,右键”Burp”并点击”New”按钮即可创建:

在该文件中编写一个简单的 Hellow World:

package Burp
import burp.IBurpExtender
import burp.IBurpExtenderCallbacks
import java.io.PrintWriter

@Suppress("unused") // Remove warning, the class will be used by burp
class BurpExtender : IBurpExtender {
    override fun registerExtenderCallbacks(callbacks: IBurpExtenderCallbacks) {
        // Let's wrap stdout and stderr in PrintWriter with auto flush
        val stdout = PrintWriter(callbacks.stdout, true)
        val stderr = PrintWriter(callbacks.stderr, true)

        // Set our extension name, this will be display in burp extensions tab
        callbacks.setExtensionName("Wu Hu")
        stdout.println("Hello world!")
        stderr.println("OMG! Error!!")
    }
}

接下来我们需要构建 Jar 文件,按住 CTRL+ALT+SHIFT+S 打开”项目结构”菜单,选择”Artifacts”并点击”+”号以新建 Jar 文件:

然后选择目录为插件项目名称:

然后可以勾选”Include in project build”,来为每个生成自动创建 Jar 文件:

最后,键入 CTRL+F9 即可构建项目:

在 Burp Suite 的扩展插件选项卡界面添加自定义的 Burps 插件:

我们可以在”Output”和”Error”选项卡中查看自定义的扩展插件消息:

简单代码示例

如需要更多的代码示例,可以访问以下两个 Burp Suite 官方仓库查看:

https://github.com/PortSwigger/burp-extensions-montoya-api-examples

https://github.com/PortSwigger/example-hello-world

GitHub 仓库