天天看點

idea gui插件_如何開發一個Burp插件

Burp 是 Web 安全測試中不可或缺的神器。每一個師傅的電腦裡面應該都有一個 Burp。同時 Burp 和很多其他神器一樣,它也支援插件。但是目前總體來說網上 Burp 插件開發的資料不是特别特别的豐富。今天我也來講講自己如何從一個完全不會 Burp 插件開發的小白如何學習 Burp 插件的開發。

如何調試

其實開發一樣東西,調試真的特别重要。如果沒有調試,那就和瞎子摸象差不多,非常的難頂。尤其是在 Burp 插件的開發過程中,如果你不可以調試,那你就必須把 jar 包打包出來,再安裝,然後通過 output 來列印調試,這樣的确非常地痛苦。後來在網上找了一些資料,一開始沒太明白,後來研究發現原來調試配置這麼簡單。這麼我們以宇宙 JAVA 開發神器 IDEA 為例。

1.配置 DEBUG

首先是在 IDEA 裡面配置調試。點選右上角裡面的配置,點選 "Edit Configurations" 就可以進入對 DEBUG 的配置頁面。新增一個 Remote 配置,命名可以随自己的喜好。

idea gui插件_如何開發一個Burp插件

2. 指令行啟動 Burp

為了配合調試,需要在指令行中使用剛才建立 DEBUG 配置的參數來啟動 Burp。

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar burpsuite_community_v2.1.02.ja
           

3. 部署 jar 包,打斷點

可以現在程式中打一下斷點。接着就是編譯 jar 包,并且啟動 IDE 的 DEBUG。将 jar 包部署到 Burp 中,下面就可以快樂地調試了。

idea gui插件_如何開發一個Burp插件

Burp 開發

老實說其實 Burp 插件開發其實還是比較簡單的,隻要你掌握正常的套路,熟悉了基本的 API 之後,基本就可以進行插件的開發。插件開發最困難的部分其實是 GUI 的開發,不過這也屬于 JAVA GUI 開發的範疇,這個暫不讨論。Burp 開發注意以下幾點:

  • 所有 Burp 插件都必須實作 IBurpExtender 接口
  • 實作的類必須叫做 BurpExtender
  • 必須要重寫 registerExtenderCallbacks 方法

後續如果需要調用啟用其它接口的方法,那麼也需要在 BurpExtender 中實作相應的接口。講一個例子,比如要對 Proxy 進行相關的操作。

首先,需要在 BurpExtender 中實作 IProxyListener 接口,接下來就需要實作 processProxyMessage 方法。在 processProxyMessage 方法中,就可以對發送的請求以及相應進行處理。

public 
           

下面再講一個例子,擷取請求中的請求頭:

public List<Map<String, String>> getHeaders(IHttpRequestResponse messageInfo) {
 List<Map<String, String>> headers = new ArrayList<>();
 IRequestInfo analyzeRequest = helpers.analyzeRequest(messageInfo);
 List<String> h = analyzeRequest.getHeaders();
 for (String h1: h) {
 Map<String, String> hMap = new HashMap<>();
 if (h1.startsWith("GET") || h1.startsWith("POST")) {
 continue;
 } else {
 String[] header = h1.split(":", -1);
                hMap.put(header[0], header[1]);
 }
            headers.add(hMap);
 }
 return headers;
 }
           

總結

其實總的來說 Burp 插件開發并不特别困難,隻要當一個合格的 API 調用者就可以了。網上目前也有很多開源的 Burp 插件代碼,其實你可以找一個感興趣的 Burp 插件代碼看一下,你就可以快速地了解這些 API 的作用。其實 Burp 的 Extender 中的 APIs 就已經列出了所有可用的 API 接口。

idea gui插件_如何開發一個Burp插件