最近這幾天在寫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發送郵件功能