最近这几天在写burp的插件,有一些写burp插件的流程和误区想跟大家分享一下:
第一步,打开burpsuit,打开extender页面,并将burp中自带的api代码导出,方便后续的代码开发;
第二步,使用idea创建一个java项目并将上一步导出的api代码导入到该项目中;
第三步,在导入的项目中创建一个叫BurpExtender.java的类并Implements IBurpExtender这个类,注意,必须叫这个名字,否则burp会识别不到此插件的存在,如上图;
第四步,在BurpExtender中书写,你想要的代码;
1. 首先需要定义全局变量,如下图:
public class BurpExtender implements IBurpExtender {
IExtensionHelpers helpers;
PrintWriterstdout;
IBurpExtenderCallbacks mCallback;
}
2. mCallback 此变量是在书写burp插件中最必不可少的变量,如果你需要调用你所导出的api的函数的话,必须要用mCallback先注册一下,如下;
@Override
public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) {
// set our extension name
mCallback = callbacks;
mCallback.setExtensionName("Active Scanextension");//插件名字
//mCallback.registerContextMenuFactory(this);
//调用burp对图形化界面进行编辑
mCallback.registerHttpListener(this);
//调用burp的进程监听,可以获取burp的所有进程,并加以更改
mCallback.registerScannerCheck(this);//调用burp中对扫描的check模块
//在初始化的时候将burp设置成不拦截模式
mCallback.setProxyInterceptionEnabled(false);
//mCallback.registerScannerListener(this);//调用burp扫描模块
helpers = mCallback.getHelpers();
//callbacks.getHelpers() 常用辅助方法
// obtainour output and error streams
stdout = new PrintWriter(callbacks.getStdout(), true);
PrintWriterstderr = newPrintWriter(callbacks.getStderr(), true);
// write a message to our output stream
stdout.println("Hellooutput new ");
}
3. 上述函数为burp中自带函数,并在加载插件时自动调用并运行的函数,同时注册的时候,还要实现相应的interface类;
4. helps变量在实现时应使用mCallBack此变量进行初始化;
helpers = mCallback.getHelpers();
//以下为简单的helps调用
//method为burp捕捉的请求所发送的method,如get、post、options
String method =helpers.analyzeRequest(baseRequestResponse).getMethod();
//url为burp捕捉到的请求所发送的url
String url =helpers.analyzeRequest(baseRequestResponse).getUrl().toString();
5. 其中helps包含你需要burp此软件传入给你的任意变量和之前burp所具有的功能,如下图,举例getRequestParameter代表获取传入的request变量;
6.stdout代表需要在burp自带的插件页面上打印出来的东西,如下图;
//初始化stdout
stdout = new PrintWriter(callbacks.getStdout(), true);
PrintWriterstderr = newPrintWriter(callbacks.getStderr(), true);
// write a message to our output stream
stdout.println("Hellooutput new ");
7.在下图标红的地方打印出来你需要打印出的东西如log、error,同时burp具有专门打印错误的函数,使用方法和stdout相同
下一篇文章讲如何写真正的burp插件,并实现burp发送邮件功能