Burpsuite作為web測試的神器,已經人手必備了。它提供的一系列互相配合的工具,極大的提高了手工測試的效率,從1.5版本開始,Burpsuite開始支持擴展。用戶可以自己開發擴展實現一些特殊的需求。不過目前關于Burpsuite擴展開發的中文資料很少。這里拋磚引玉總結一下學習的過程。
目前burpsuite官方支持用java,python,ruby開發擴展,選擇還是很多的。Brupsuite的擴展可以實現非常多的功能,比如自定義掃描,修改http請求和響應,修改burp配置等等。幾乎所以burpsuite功能都支持在擴展中進行控制。所以其實是可以用擴展把自己經常使用的功能做成自動化的。這也應該是一個最終的學習目標。官方文檔是首選的資料。中文介紹資料可以參考BurpSuite擴展API和HelloWold。
安裝python開發的擴展需要配置Jython環境。Jython下載直接下載Standalone Jar版本就可以。在extender標簽頁中選擇options標簽。在python environment中選中剛剛下載的jython standalon jar。
如果下載的是jython installer。需要在安裝的時候選擇standlone類型。之后再在burpsuite中選擇安裝目錄下的jython.jar.
如果沒有配置好jython環境。添加python編寫的擴展會報錯。
burpsuite的文檔中給了多個樣例以及詳細的API文檔。
個人覺得最快的方法還是閱讀現成的擴展代碼。很多需求稍微修改現成的擴展就可以完成。Burp的Bapp store里的擴展安裝之后默認是在burpsuite同目錄下的bapps的文件夾內。
簡單介紹一下幾個最常用的接口:
interface IBurpExtender: 這個接口所有的擴展都需要實現.
Interface IBurpExtenderCallbacks: 這個接口幾乎是必備的。在編寫擴展的過程中會經常用到。
Interface IExtensionHelpers: 這個接口是新加的。提供了編寫擴展中常用的一些通用函數,比如編解碼、構造請求等。這樣就不需要重負造輪子了。
Interface IHttpRequestResponse: 這個接口包含了每個請求和響應的細節。在Brupsuite中的每個請求或者響應都是IHttpRequestResponse實例。
在web測試過程中,使用repeater調試接口是很常見的一個使用方式。現在很多接口都是返回包含unicode明文的json數據,比如這種
{"result":"passwd_error","msg":"\u7528\u6237\u540d\u5bc6\u7801\u9519\u8bef"}
由于brup的decoder沒有對unicode的解碼,每次想要看一下這些unicode是是什么意思的時候都需要復制出來使用其他工具解碼。可以使用burp擴展來實現自動解碼unicode,從而提高測試的流暢性。
首先引入所需要的模塊,在BurpExtender類中定義我們需要的方法。
toolFlag是burpsuite中對工具進行識別的方式,proxy是4,repeater是64.可以在文檔里查看所有工具對應的flag值。這里幾行代碼就是先解碼返回值,查找unicode明文,進行解碼,之后再更新響應的body。
加載擴展之前,repeater看到的返回:
加載擴展之后:
代碼下載地址:github
BurpSuite 擴展開發[1]-API與HelloWold burpextensions.com