Burp Suite的插件开发入门

Burp Suite的强大除了自身提供了丰富的可供测试人员使用的功能外,其提供的支持第三方拓展插件的功能也极大地方便使用者编写自己的自定义插件。
Burp Suite支持的插件类型有Java、Python、Ruby三种。
无论哪种语言的实现,开发者只要选择自己熟悉的语言,按照接口规范去实现想要的功能即可。
下面我们就来看看如何开发一个Burp Extender的插件。

本章讲述的主要内容有:

  • Demo入门
  • 常用API与接口
  • 界面

以下的介绍都是以自己熟悉的java语言来做的

Hello world

开发一个插件,只用创建一个名为BurpExtender的类(包名必须是burp),然后实现IBurpExtender接口。
当插件注册时,会调用registerExtenderCallbacks方法,参数IBurpExtenderCallbacks 会提供一系类的API供开发者处理。

打包好,在Burp Suite 的Extender页面,可以进行添加。
成功之后,会在插件列表中看到插件的名字。

1
2
3
4
5
6
7
8
9
10
11
package burp;

import burp.IBurpExtender;
import burp.IBurpExtenderCallbacks;

public class BurpExtender implements IBurpExtender{
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
callbacks.setExtensionName("hello world");
}
}

pom.xml中引入的依赖

1
2
3
4
5
<dependency>
<groupId>net.portswigger.burp.extender</groupId>
<artifactId>burp-extender-api</artifactId>
<version>1.7.22</version>
</dependency>

常用API与接口

API的说明可以看java doc

以下介绍一些常用的

IBurpExtenderCallbacks

保存与读取配置

1
2
IBurpExtenderCallbacks.saveExtensionSetting(String name, String value);
String IBurpExtenderCallbacks.loadExtensionSetting(String name);

保存数据到临时文件上

1
2
ITempFile IBurpExtenderCallbacks.saveToTempFile(byte[] buffer);
byte[] ITempFile.getBuffer();

IExtensionHelpers

IExtensionHelpers helpers = callbacks.getHelpers();

  • 提供一些对字条转化的API,如base64Dcode,urlDecode之类的
  • 提供分析类的API,如analyzeRequest,analyzeResponse
  • 提供构建数据类的API,如buildHttpMessagebuildHttpService
  • 其它,如makeScannerInsertionPoint

IExtensionStateListener

callbacks.registerExtensionStateListener(listener);
IExtensionStateListener实现方法extensionUnloaded中可以处理插件释放时释放资源的操作

事件处理

  • IHttpListener – 当有http请求时,会通过processHttpMessage方法的参数把相关数据传递到插件进行处理
  • IProxyListener – 当有代理请求时,会通过processProxyMessage方法的参数把相关数据传递到插件进行处理
    • processProxyMessage中的IInterceptedProxyMessage可以处决定是否打断本次请求
  • IScannerListener –
  • IExtensionStateListener –实现extensionUnloaded来实现插件释放时释放资源的操作

流量控制

中实现IHttpListener方法,在processHttpMessage中修改IHttpRequestResponse的请求控制

Burp工具组件接口类

  • IInterceptedProxyMessage
  • IIntruderAttack
  • IIntruderPayloadGenerator
  • IIntruderPayloadGeneratorFactory
  • IIntruderPayloadProcessor
  • IProxyListener
  • IScanIssue
  • IScannerCheck
  • IScannerInsertionPoint
  • IScannerInsertionPointProvider
  • IScannerListener
  • IScanQueueItem
  • IScopeChangeListener

界面处理

  • IContextMenuFactory
  • IContextMenuInvocation
  • ITab
  • ITextEditor
  • IMessageEditor
  • IMessageEditorTabFactory
  • IMenuItemHandler

参考


Burp Suite的插件开发入门
https://blog.fengcl.com/2021/02/22/burp-suite-extensions-develop/
作者
frank
发布于
2021年2月22日
许可协议