1. 程式人生 > >burpsuite編寫插件--環境安裝

burpsuite編寫插件--環境安裝

burpsuite burpsuite插件

Burpsuite編寫插件環境搭建

在安全測試過程中,我們經常會使用到burpsuite,在burp中允許我們自己編寫插件,在Extender-BApp Store中可以選擇我們要安裝的插件:
技術分享圖片

但是有時候找不到我們需要的插件,這時候需要我們自己編寫,burp支持使用python、java、ruby三種語言。下面我來講解一下如何使用python編寫burpsuite插件。(我是在windows下操作的,其他操作系統相似)

1. 使用python編寫插件,我們需要導入jython standalone jar包,該包在哪裏下載?為什麽需要該包?

BurpSuite 是使用 Java 編程語言編寫的,所以想要使用 Python 編程語言開發其插件,就必須借助於 Jython。Jython 本質上是一個 Java 應用程序,它允許 coder 們使用 Java 代碼調用 Python 庫反之,也可以使用 Python 調用 Java 的庫。

jython standalone jar的下載地址:http://search.maven.org/remotecontent?filepath=org/python/jython-standalone/2.7.0/jython-standalone-2.7.0.jar

2.如何將jython加載到burp中?

在burp中Extender-Options中加載jython包
技術分享圖片

3.測試jython是否安裝成功?是否可以加載我們自己編寫的插件?

在這裏我編寫了一個測試用例,用來測試我們自己編寫的插件是否可以正常使用。
`from burp import IBurpExtender
from burp import IHttpListener

from java.io import PrintWriter

class BurpExtender(IBurpExtender, IHttpListener):

#
#implement IBurpExtender
#
def    registerExtenderCallbacks(self, callbacks):
    # keep a reference to our callbacks object
    self._callbacks = callbacks

    # set our extension name
    callbacks.setExtensionName("fanyingjie")

    # obtain our output stream
    self._stdout = PrintWriter(callbacks.getStdout(), True)

    self._helpers  = callbacks.getHelpers()

    # register ourselves as an
    callbacks.registerHttpListener(self)

def processHttpMessage(self,toolFlag,messageIsRequest, messageInfo):
    self._stdout.println("success")

`

將以上代碼保存成example.py;
技術分享圖片

如果都安裝正確則在Output模塊會出現大量success;如果在加載插件時提示error,則表明jython包安裝出錯了。

4.有時候我們編寫插件需要加載其他模塊,比如requests,當插件中導入requests模塊會如何?

在測試代碼中加入requests模塊

from burp import IBurpExtender
from burp import IHttpListener
from java.io import PrintWriter
import requests

class BurpExtender(IBurpExtender, IHttpListener):

    #
    #implement IBurpExtender
    #
    def    registerExtenderCallbacks(self, callbacks):
        # keep a reference to our callbacks object
        self._callbacks = callbacks

        # set our extension name
        callbacks.setExtensionName("fanyingjie")

        # obtain our output stream
        self._stdout = PrintWriter(callbacks.getStdout(), True)

        self._helpers  = callbacks.getHelpers()

        # register ourselves as an
        callbacks.registerHttpListener(self)

    def processHttpMessage(self,toolFlag,messageIsRequest, messageInfo):
        self._stdout.println("success")

將該代碼保存成example1.py,在burp中加載example1.py插件:(步驟3)
技術分享圖片
當我們加載插件時,burp報錯沒有requests模塊。也許會有人問我本地安裝了python,並且有requests模塊為什麽會出錯?jython和python是兩個不同的物種,至於出現這個錯誤的原因是我們導入的jython包中沒有requests庫,所以我們需要在jython包中安裝requests庫。

5.如何解決jython缺少相關庫的問題?

我的解決方法是本機安裝jython,之後缺少什麽庫都可以手動安裝了:

下載jython包安裝,下載地址:
http://search.maven.org/remotecontent?filepath=org/python/jython-installer/2.7.0/jython-installer-2.7.0.jar
雙擊jar包安裝jython
在burp中加載jython包,加載方法如下:
技術分享圖片
安裝成功後我們需要測試一下example.py該插件是否可用,註意是沒有加載requests庫的插件
技術分享圖片
插件可以正常使用(輸出了success表名插件在運行)
接下來需要給jython安裝requests庫,因為我windows上沒有安裝jython的pip,所以我現在centos上用jython pip安裝了requests庫,之後將Lib\site-packages該文件整個復制到windows上:
安裝jython的命令 ./jython/bin/pip install requests
技術分享圖片
技術分享圖片
到此requests包安裝完畢,我們現在加載example1.py,看看是否會報錯?
技術分享圖片
沒有報錯,正常輸入success

在編寫插件時需要參考api,api中將每一個方法的使用都做了詳細的解釋。


> 下一節,我們將正式編寫插件--將burp與sqlmapapi結合,時時檢查所有的鏈接參數是否存在註入?

burpsuite編寫插件--環境安裝