
戟星安全实验室
忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等。
本文约17332字,17图 阅读约需5分钟。
前言
从环境配置开始,从零开始开发一个CORS漏洞插件。
burp插件开发系列文章-第一篇。
环境配置
新建项目
在 IDEA 新建一个 gradle 项目,点击 Create New Project。选择 Gradle 项目, Gradle 是一个构建工具,可以方便加载所需的代码仓库。

添加依赖
新建完后,在 build.gradle 文件中添加以下依赖,也就是加载 burpsuite 插件API ,自动从远程仓库加载 burpsuite API 。

build.gradle 文件的内容:
plugins {id 'java'id 'com.github.johnrengelman.shadow' version '5.2.0'}group 'org.example'version '1.0-SNAPSHOT'repositories {mavenCentral()}dependencies {testCompile group: 'junit', name: 'junit', version: '4.12'//compile('net.portswigger.burp.extender:burp-extender-api:1.7.13')compile('net.portswigger.burp.extender:burp-extender-api:2.3')

新建包名
接着在 /src/main/java 目录处创建一个名为 burp 的包名,在 java 目录处右键 -> 新建 -> Package


接着在该包上右键,新建一个名为 BurpExtender 的类
这个包名和类名是固定的,burpsuite 加载插件时就是通过 burp.BurpExtender 来查找的,如果不这样起名,会报 ClassNotFoundException异常报错。


BurpExtender 类需要实现 IBurpExtender 接口,burp 在加载插件时,会调用该接口,并传递IBurpExtenderCallbacks 接口仅我们使用。

我们写一个最简单的例子测试。
package burp;import java.io.PrintWriter;public class BurpExtender implements IBurpExtender {@Overridepublic void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {//设置插件名字callbacks.setExtensionName("GCC");// 获取我们的输出流PrintWriter stdout = new PrintWriter(callbacks.getStdout(), true);// 向输出流写入我们需要打印的信息stdout.println("Hello GCC");}}
编译该项目成 jar 包
点击右侧的 gradle 菜单,展开菜单,双击 shadowjar ,gradle 会自动编译项目成 jar 包。

编译成功后,jar 包位于 build 目录中的 libs 目录中。

插件测试
将插件导入进Burp。

插件加载成功并成功打印输出的信息。


查看相关资料测试Burp的主动扫描模块和被动扫描模版
主动扫描doActiveScan
调用主动扫描的插件时,将burp默认的payload关闭开启主动扫描的时候,也会默认被动扫描。
被动扫描doPassiveScan
被动扫描,burp默认是开启被动扫描的,即每次的数据包都会放到被动扫描模块进行扫描。那么我们可以重定义被动扫描方法,让每次数据包的被动扫描发送我们定义的payloads。




