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 的庫。
2.如何將jython加載到burp中?
在burp中Extender-Options中加載jython包
3.測試jython是否安裝成功?是否可以加載我們自己編寫的插件?
在這裏我編寫了一個測試用例,用來測試我們自己編寫的插件是否可以正常使用。
`from burp import IBurpExtender
from burp import IHttpListener
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編寫插件--環境安裝