作者:
路人甲
·
2015/04/24 10:10
0x00 簡介
Burpsuite作為web測試的神器,已經人手必備了。它提供的一系列互相配合的工具,極大的提高了手工測試的效率,從1.5版本開始,Burpsuite開始支援擴充套件。使用者可以自己開發擴充套件實現一些特殊的需求。不過目前關於Burpsuite擴充套件開發的中文資料很少。這裡拋磚引玉總結一下學習的過程。
0x01 基礎知識
目前burpsuite官方支援用java,python,ruby開發擴充套件,選擇還是很多的。Brupsuite的擴充套件可以實現非常多的功能,比如自定義掃描,修改http請求和響應,修改burp配置等等。幾乎所以burpsuite功能都支援在擴充套件中進行控制。所以其實是可以用擴充套件把自己經常使用的功能做成自動化的。這也應該是一個最終的學習目標。官方文件是首選的資料。中文介紹資料可以參考BurpSuite擴充套件API和HelloWold。
0x02 環境配置
安裝python開發的擴充套件需要配置Jython環境。Jython下載直接下載Standalone Jar版本就可以。在extender標籤頁中選擇options標籤。在python environment中選中剛剛下載的jython standalon jar。
![images](https://i.iter01.com/images/77ecce06a092d726683cbf8c4d95eb904a61c871bbcff3906194e0240f725edb.jpg)
如果下載的是jython installer。需要在安裝的時候選擇standlone型別。之後再在burpsuite中選擇安裝目錄下的jython.jar. ![](https://i.iter01.com/images/caa11e66896710aaf0a0b5ba0463e39abb3de97dc037268b56b7bc1ab5de1cd1.jpg)
如果沒有配置好jython環境。新增python編寫的擴充套件會報錯。 ![](https://i.iter01.com/images/7fbce070e10f1984051dac334f29c49e16233d3704cc88283e00d3384f237fb3.jpg)
0x03 常用介面介紹
burpsuite的文件中給了多個樣例以及詳細的API文件。 ![](https://i.iter01.com/images/28076696c0803da7250a52c1d6cfbc008a6a2c13f5833f0cd483513a24e93a5d.jpg)
個人覺得最快的方法還是閱讀現成的擴充套件程式碼。很多需求稍微修改現成的擴充套件就可以完成。Burp的Bapp store裡的擴充套件安裝之後預設是在burpsuite同目錄下的bapps的資料夾內。 ![](https://i.iter01.com/images/32d56cde7c81358e060f861e62a5c05721350ddc440d7e14c8e38855dac96069.jpg)
簡單介紹一下幾個最常用的介面:
interface IBurpExtender: 這個介面所有的擴充套件都需要實現.
Interface IBurpExtenderCallbacks: 這個介面幾乎是必備的。在編寫擴充套件的過程中會經常用到。
Interface IExtensionHelpers: 這個介面是新加的。提供了編寫擴充套件中常用的一些通用函式,比如編解碼、構造請求等。這樣就不需要重負造輪子了。
Interface IHttpRequestResponse: 這個介面包含了每個請求和響應的細節。在Brupsuite中的每個請求或者響應都是IHttpRequestResponse例項。
0x04 第一個burpsuite擴充套件
在web測試過程中,使用repeater除錯介面是很常見的一個使用方式。現在很多介面都是返回包含unicode明文的json資料,比如這種
{"result":"passwd_error","msg":"\u7528\u6237\u540d\u5bc6\u7801\u9519\u8bef"}
由於brup的decoder沒有對unicode的解碼,每次想要看一下這些unicode是是什麼意思的時候都需要複製出來使用其他工具解碼。可以使用burp擴充套件來實現自動解碼unicode,從而提高測試的流暢性。
首先引入所需要的模組,在BurpExtender類中定義我們需要的方法。
![](https://i.iter01.com/images/5944e4d0b926e504de88f334d9b077e405b83ee2a5807a5b99197f07a793ff94.jpg)
toolFlag是burpsuite中對工具進行識別的方式,proxy是4,repeater是64.可以在文件裡檢視所有工具對應的flag值。這裡幾行程式碼就是先解碼返回值,查詢unicode明文,進行解碼,之後再更新響應的body。
![](https://i.iter01.com/images/3b5be3fd9755b0b2bb825388e3d9d055d183b8d3c8c9a93360b27484c8f65340.jpg)
載入擴充套件之前,repeater看到的返回:
![](https://i.iter01.com/images/4d719b339bada6b119e758ed34e69350730f5b794aa077cce215ecb2798f2c86.jpg)
載入擴充套件之後:
![](https://i.iter01.com/images/facd887c962df934a98fda7fa5c586441d7140e2f90688e4cacbb2ebd1fa08db.jpg)
程式碼下載地址:github
0x05 相關資料
BurpSuite 擴充套件開發[1]-API與HelloWold burpextensions.com
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!