最近这几天在写burp的插件,有一些写burp插件的流程和误区想跟大家分享一下:
第一步,打开burpsuit,打开extender页面,并将burp中自带的api代码导出,方便后续的代码开发;
第二步,使用idea创建一个java项目并将上一步导出的api代码导入到该项目中;
第三步,在导入的项目中创建一个叫BurpExtender.java的类并Implements IBurpExtender这个类,注意,必须叫这个名字,否则burp会识别不到此插件的存在,如上图;
第四步,在BurpExtender中书写,你想要的代码;
1. 首先需要定义全局变量,如下图:
public class BurpExtender implements IBurpExtender { IExtensionHelpers helpers; PrintWriter stdout; IBurpExtenderCallbacks mCallback; }
2. mCallback 此变量是在书写burp插件中最必不可少的变量,如果你需要调用你所导出的api的函数的话,必须要用mCallback先注册一下,如下;
@Override public void registerExtenderCallbacks(IBurpExtenderCallbacks callbacks) { // set our extension name mCallback = callbacks; mCallback.setExtensionName("Active Scan extension");//插件名字 //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() 常用辅助方法 // obtain our output and error streams stdout = new PrintWriter(callbacks.getStdout(), true); PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true); // write a message to our output stream stdout.println("Hello output 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); PrintWriter stderr = new PrintWriter(callbacks.getStderr(), true); // write a message to our output stream stdout.println("Hello output new ");
7.在下图标红的地方打印出来你需要打印出的东西如log、error,同时burp具有专门打印错误的函数,使用方法和stdout相同
下一篇文章讲如何写真正的burp插件,并实现burp发送邮件功能
时间: 2024-12-11 10:07:48