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 |
|
pom.xml中引入的依赖
1 |
|
常用API与接口
API的说明可以看java doc
以下介绍一些常用的
IBurpExtenderCallbacks
保存与读取配置
1 |
|
保存数据到临时文件上
1 |
|
IExtensionHelpers
IExtensionHelpers helpers = callbacks.getHelpers();
- 提供一些对字条转化的API,如base64Dcode,urlDecode之类的
- 提供分析类的API,如
analyzeRequest
,analyzeResponse
- 提供构建数据类的API,如
buildHttpMessage
,buildHttpService
- 其它,如
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/