戟星安全实验室
本文约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 {
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
//设置插件名字
callbacks.setExtensionName("GCC");
// 获取我们的输出流
PrintWriter stdout = new PrintWriter(callbacks.getStdout(), true);
// 向输出流写入我们需要打印的信息
stdout.println("Hello GCC");
}
}
点击右侧的 gradle 菜单,展开菜单,双击 shadowjar ,gradle 会自动编译项目成 jar 包。
编译成功后,jar 包位于 build 目录中的 libs 目录中。
将插件导入进Burp。
插件加载成功并成功打印输出的信息。
查看相关资料测试Burp的主动扫描模块和被动扫描模版
调用主动扫描的插件时,将burp默认的payload关闭开启主动扫描的时候,也会默认被动扫描。
被动扫描,burp默认是开启被动扫描的,即每次的数据包都会放到被动扫描模块进行扫描。那么我们可以重定义被动扫描方法,让每次数据包的被动扫描发送我们定义的payloads。
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。
戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经破军安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
戟星安全实验室
# 长按二维码 关注我们 #