亚洲国产成人精品久久_欧美日韩国产综合一区二区_亚洲精品理论电影_色综合久久中文字幕

BurpExtenderApis插件開發(一)

放大字體  縮小字體 發布日期:2020-02-17  來源:來自互聯網  作者:來自互聯網  瀏覽次數:152
導讀

IBurpExtender接口類是Burp插件的入口,所有Burp的插件均需要實現此接口,并且類命名為BurpExtender。 所有Burp的插件均需要實現此接口,并且類命名為BurpExtend…

聲明

由于傳播、利用此文所提供的信息而造成的任何直接或者間接的后果及損失,均由使用者本人負責,雷神眾測以及文章作者不為此承擔任何責任。

雷神眾測擁有對此文章的修改和解釋權。如欲轉載或傳播此文章,必須保證此文章的完整性,包括版權聲明等全部內容。未經雷神眾測允許,不得任意修改或者增減此文章內容,不得以任何方式將其用于商業目的。

前言

BurpSuite允許使用者編寫自己的自定義插件,支持的插件類型有Java、Python、Ruby三種,該系列主要分享python編寫。

安裝環境

先需要安裝jython環境,下載地址

https://jython.org/download

下載好jython后,開始配置burpsuite,如下圖所示

那么這時候就已經配置好burpsuite的jython環境和模塊,只要加載py腳本即可。

No.4Burp Extender Apis

介紹下burpsuite提供的各個接口。burpsuite軟件本身也提供了api文檔

也可以查看官方api地址:https://portswigger/burp/extender/api/allclasses-noframe.html

接口大致可以分為四類

插件入口和幫助接口類:IBurpExtender、IBurpExtenderCallbacks、IExtensionHelpers、IExtensionStateListener

IBurpExtender接口類是Burp插件的入口,所有Burp的插件均需要實現此接口,并且類命名為BurpExtender。

IBurpExtenderCallbacks接口類是IBurpExtender接口的實現類與Burp其他各個組件(Scanner、Intruder、Spider......)、各個通信對象(HttpRequestResponse、HttpService、SessionHandlingAction)之間的紐帶。

IExtensionHelpers、IExtensionStateListener這兩個接口類是插件的幫助和管理操作的接口定義。

UI相關接口類:IContextMenuFactory、IContextMenuInvocation、ITab、ITextEditor、IMessageEditor、IMenuItemHandler

這類接口類主要是定義Burp插件的UI顯示和動作的處理事件,主要是軟件交互中使用。

Burp工具組件接口類:IInterceptedProxyMessage、IIntruderAttack、IIntruderPayloadGenerator、IIntruderPayloadGeneratorFactory、IIntruderPayloadProcessor、IProxyListener、IScanIssue、IScannerCheck、IScannerInsertionPoint、IScannerInsertionPointProvider、IScannerListener、IScanQueueItem、IScopeChangeListener

這些接口類的功能非常好理解,Burp在接口定義的命名中使用了的見名知意的規范,看到接口類的名稱,基本就能猜測出來這個接口是適用于哪個工具組件。

HTTP消息處理接口類:Icookie、IHttpListener、IHttpRequestResponse、IHttpRequestResponsePersisted、IHttpRequestResponseWithMarkers、IHttpService、IRequestInfo、IParameter、IResponseInfo

這些接口的定義主要是圍繞HTTP消息通信過程中涉及的cookie、Request、Response、Parameter幾大消息對象,通過對通信消息頭、消息體的數據處理,來達到控制HTTP消息傳遞的目的。

No.5嘗試寫一個最簡單的demo

首先導入Burp插件的入口IBurpExtender接口類,因為后續所有的功能代碼都是從該類里編寫

from burp import IBurpExtender

所有Burp的插件均需要實現此接口,并且類命名為BurpExtender

class BurpExtender(IBurpExtender):

加載擴展時調用此方法。它注冊IBurpExtenderCallbacks接口的實例 ,并且提供擴展可以調用的方法來執行各種操作。

def registerExtenderCallbacks(self, callbacks):

整體代碼如下:

from burp import IBurpExtender

class BurpExtender(IBurpExtender):

def registerExtenderCallbacks(self, callbacks):

# your extension code here

return

這個空的擴展不執行任何操作,但是仍然可以將其加載到Burp中

成功加載我們自己自定義的py插件

Burp Suite使用此接口將一組回調方法傳遞給擴展,擴展可以使用這些回調方法在Burp中執行各種操作。加載擴展時,Burp調用其 registerExtenderCallbacks()方法并傳遞IBurpExtenderCallbacks接口的實例 。然后,擴展可以根據需要調用此接口的方法,以擴展Burp的功能。

下面學習各個模塊的觸發代碼以及如何生成上下文菜單

No.6IBurpExtenderCallbacks

來看下此接口有哪些方法

可以看到方法非常的多,根據自己的需求選擇對應的方法。

setExtensionName(java.lang.String name)

此方法用于設置當前擴展名的顯示名稱,該名稱將顯示在擴展器工具的用戶界面中。

self._callbacks.setExtensionName("SQL Inject")

注冊功能

# 注冊一個 HTTP 監聽器,那么當我們開啟Burp監聽的 HTTP 請求或收到的 HTTP 響應都會通知此監聽器

callbacks.registerHttpListener(self)

# 注冊菜單上下文

# register message editor tab factory

callbacks.registerMessageEditorTabFactory(self)

# register menu item factory

callbacks.registerContextMenuFactory(self)

# 注冊掃描

callbacks.registerScannerCheck(self)

getHelpers() 調用該方法返回對象IExtensionHelpers

此方法用于獲取IExtensionHelpers對象,擴展可以使用該對象構建和分析HTTP請求。

self._helpers = callbacks.getHelpers()

那么代碼就可以寫成如下:

class BurpExtender(IBurpExtender, IHttpListener):

def registerExtenderCallbacks(self, callbacks):

self._callbacks = callbacks

# 用于獲取IExtensionHelpers對象,擴展可以使用該對象執行許多有用的任務。返回:包含許多幫助器方法的對象,用于構建和分析HTTP請求等任務。

self._helpers = callbacks.getHelpers()

# 用于設置當前擴展的顯示名稱,該名稱將顯示在Extender工具的用戶界面中。參數:name - 擴展名。。

self._callbacks.setExtensionName("SQL Inject")

# 注冊一個 HTTP 監聽器,那么當我們開啟Burp監聽的 HTTP 請求或收到的 HTTP 響應都會通知此監聽器

callbacks.registerHttpListener(self)

# 注冊菜單上下文

# register message editor tab factory

callbacks.registerMessageEditorTabFactory(self)

# register menu item factory

callbacks.registerContextMenuFactory(self)

# 注冊掃描

callbacks.registerScannerCheck(self)

最簡單的一個基礎配置寫好了,接下來實現功能。

No.7processHttpMessage

剛才介紹了registerHttpListener方法注冊了監聽器,那么只要Burp監聽到數據包,就會調用processHttpMessage方法。

processHttpMessage(int toolFlag, boolean messageIsRequest, IHttpRequestResponse messageInfo)

下面是代碼和參數的介紹

def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):

'''

:param toolFlag: 一個標志,指示發出請求的Burp工具,Burp工具標志在IBurpExtenderCallbacks界面中定義.例如Proxy和Repeater觸發插件

:param messageIsRequest: 標記是否為請求數據包或響應數據包

:param messageInfo: 要處理的請求/響應的詳細信息。擴展可以調用此對象上的setter方法來更新當前消息,從而修改Burp的行為。

:return:

'''

這里toolFlag的數字代表模塊,例如哪個模塊觸發監聽器,比如Proxy或者Repeater等

官網給的鏈接:https://portswigger/burp/extender/api/constant-values.html#burp.IBurpExtenderCallbacks

那么我只想要Proxy和Repeater觸發插件的功能,代碼則如下:

# Proxy和Repeater觸發插件

if toolFlag == 64 or toolFlag == 4:

整體代碼如下:

# -*-coding:utf-8 -*-

# Burp監聽到數據包,就會調用processHttpMessage方法

from burp import IBurpExtender, IHttpListener

SLEEP_TIME = 10

class BurpExtender(IBurpExtender, IHttpListener):

def registerExtenderCallbacks(self, callbacks):

self._callbacks = callbacks

# 用于獲取IExtensionHelpers對象,擴展可以使用該對象執行許多有用的任務。返回:包含許多幫助器方法的對象,用于構建和分析HTTP請求等任務。

self._helpers = callbacks.getHelpers()

# 用于設置當前擴展的顯示名稱,該名稱將顯示在Extender工具的用戶界面中。參數:name - 擴展名。。

self._callbacks.setExtensionName("processHttpMessage")

# 用于注冊偵聽器,該偵聽器將通知任何Burp工具發出的請求和響應。擴展可以通過注冊HTTP偵聽器來執行自定義分析或修改這些消息。參數:listener- 實現IHttpListener接口的擴展創建的對象 。

callbacks.registerHttpListener(self)

def processHttpMessage(self, toolFlag, messageIsRequest, messageInfo):

'''

:param toolFlag: 一個標志,指示發出請求的Burp工具,Burp工具標志在IBurpExtenderCallbacks界面中定義.例如Proxy和Repeater觸發插件

:param messageIsRequest: 標記是否為請求數據包或響應數據包

:param messageInfo: 要處理的請求/響應的詳細信息。擴展可以調用此對象上的setter方法來更新當前消息,從而修改Burp的行為。

:return:

'''

# Proxy和Repeater觸發插件

if toolFlag == 64 or toolFlag == 4:

# 處理響應內容

if not messageIsRequest:

print 'call processHttpMessage'

實踐:

加載py腳本

repeater發送數據包

成功觸發方法

No.8createMenultems

創建上下文菜單,類似于下圖所示

官方api介紹地址:https://portswigger/burp/extender/api/burp/IContextMenuFactory.html

需要導入以下模塊

from burp import IBurpExtender, IMessageEditorTabFactory, IContextMenuFactory

from javax.swing import JMenuItem

需要注冊菜單

# register message editor tab factory

callbacks.registerMessageEditorTabFactory(self)

# register menu item factory

callbacks.registerContextMenuFactory(self)

創建上下文菜單,觸發run方法

# 創建菜單右鍵

def createMenuItems(self, invocation):

self.invocation = invocation

menu_list = []

menu_list.append(JMenuItem("Send to createMenuItems", None,

actionPerformed=self.run))

return menu_list

定義run方法

def run(self, event):

print 'call createMenuItems'

整體代碼如下

# -*-coding:utf-8 -*-

# 右鍵菜單

from burp import IBurpExtender, IMessageEditorTabFactory, IContextMenuFactory

from javax.swing import JMenuItem

class BurpExtender(IBurpExtender, IMessageEditorTabFactory, IContextMenuFactory):

def registerExtenderCallbacks(self, callbacks):

self._callbacks = callbacks

# 用于獲取IExtensionHelpers對象,擴展可以使用該對象執行許多有用的任務。返回:包含許多幫助器方法的對象,用于構建和分析HTTP請求等任務。

self._helpers = callbacks.getHelpers()

# 用于設置當前擴展的顯示名稱,該名稱將顯示在Extender工具的用戶界面中。參數:name - 擴展名。。

self._callbacks.setExtensionName("createMenuItems")

# register message editor tab factory

callbacks.registerMessageEditorTabFactory(self)

# register menu item factory

callbacks.registerContextMenuFactory(self)

# 創建菜單右鍵

def createMenuItems(self, invocation):

self.invocation = invocation

menu_list = []

menu_list.append(JMenuItem("Send to createMenuItems", None,

actionPerformed=self.run))

return menu_list

def run(self, event):

print 'call createMenuItems'

實踐:

右鍵點擊Send to createMenuItems

成功觸發

這里拋出一個問題:那就是界面卡死問題。當我們想寫一個檢測注入漏洞的插件時,payload很多,那么burp會等待payload運行完才會反應,這樣就陷入了卡死。

下節課講解如何解決payload很多,burp卡死問題。

本文作者是屬于水滴實驗室。以復雜對抗為主,通過研究流量特征分析對抗技術、防御技術與終端安全防御技術來發現防護體系不足,增強產品能力提升。實驗室成員均來多年攻防經驗的研究員,擁有非常完善的攻防經驗,為產品檢測、安全防御能力檢測提供了強有力的保障,同時主要擔任紅藍對抗業務,以紅隊視角評估企業安全防護體系。

本文轉載自雷神眾測

 
 
免責聲明
本文為會員免費發布,僅代表發布者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理。
 
 
主站蜘蛛池模板: 国产精品久久久一区| 激情小说综合网| 亚洲欧美在线网| 久久精品视频91| 91久久精品美女| 国产精品久在线观看| 国产日韩中文字幕| 久久国产天堂福利天堂| 日本精品一区二区三区四区| 日韩中文在线字幕| 亚洲国产成人不卡| 久久精品美女| 久久精品99国产| 久久精品午夜一区二区福利| 欧美亚洲国产日韩2020| 日本一区二区三区www| 日韩一级片一区二区| 视频在线一区二区三区| 日韩一区二区高清视频| 欧洲精品久久久| 欧美一区二区中文字幕| 人妻无码一区二区三区四区| 日本阿v视频在线观看 | 国产欧美日韩中文字幕在线| 欧美激情网站在线观看| 蜜桃av久久久亚洲精品| 精品一区久久久| 国产精品亚洲天堂| 国产精品极品在线| 亚洲欧美日韩不卡| 欧美日韩国产不卡在线看| 欧美久久久久久V| 国产一区深夜福利| 国产成人精品av在线| 亚洲欧洲日韩精品| 欧美亚洲在线观看| 精品久久久久久无码中文野结衣| 国产精品视频二| 91免费视频网站在线观看| 亚洲一二区在线| 久久久亚洲精品无码|