Categories
程式開發

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發


【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 1

本期嘉賓:3stoneBrother,京東集團攻防與實驗室安全工程師,業務藍軍負責人,熟悉Web滲透測試,長期致力於甲方Web業務安全方向攻擊與防禦研究。

✎小課堂黑板報

上期我們談到漏洞挖掘的基本思路,本期將繼續和大家探討,如何根據實際需求開發出提高安全測試效率的工具,以支持漏洞的挖掘。

目前業內不乏優秀的工具,CO2, Logger++, Autorize, XSS Validato都是不錯的選擇,但通用化的工具不能完全符合Web安全測試人員的特定需求。從實際業務的操作效率方面考慮,獨立開發出適用實際業務的插件是必要的。

基礎知識:burpsuite

burpsuite是Web應用程序滲透測試集成平台,常被用來進行網站滲透測試。 burpsuite提供了豐富的開發接口,且支持Java、Python、Ruby語言的擴展。

數據信息在用戶端最終是希望展示給使用者的,需要進行明文展現,這種基於用戶體驗角度的考慮恰好為攻擊者提供了機會,現階段的攻擊者更傾向於在用戶端利用這類弱點進行攻擊。

傳統的安全防禦設備和防禦措施對邏輯漏洞的治理收效甚微,而且邏輯漏洞的種類相當豐富。在實際業務處理中,通用的邏輯漏洞解決方案往往效果不佳,但一個業務層抽象得來的模型,在其自身站點往往具有通用性。

例如,某個URL存在越權,可能該站點的其他URL也存在類似的問題。我們基於該URL的特徵,自行獨立開發出burpsuite插件,對該站點進行批量掃描,就能更全面的發現同類問題。

Step 1 獨立開發環境配置

burpsuite插件的獨立開發,需要在某個配置環境下進行。 burpsuite支持Java、Python、Ruby三種語言的擴展,下面以python語言環境為例進行講解。

burpsuite會在java環境下運行,涉及的數據庫基本都是java語言的腳本。 Python作為開發語言,想要調用Java庫就需要藉助Jython:

我們以MacOS為例,

代碼運行: brew install jython

Jython環境的配置:

Extender-> options -> python Environment -> select file,導入已下載好的jython jar數據包(操作至下圖所示即可)

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 2

Step 2 插件開發關鍵接口

下面重點講幾個關鍵接口的實例:

1. API

API接口文檔可以通過如下方式獲取:burpsuite 的Extender -> APIs

或通過以下鏈接進行查閱:

https://portswigger.net/burp/extender/api/index.html

IBurpExtender

IBurpExtender接口是Burpsuite插件的入口,所有的插件開發都必須要實現。

registerExtenderCallback

IBurpExtenderCallbacks這個接口幾乎是必備的,我們在插件編寫的過程中會經常用到。運行代碼參考下圖:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 3

通過參數callbacks可以獲得核心基礎庫,例如日誌、請求、返回值修改等。

4,IExtensionHelpers

IExtensionHelpers接口提供了插件編寫擴展中常用的一些通用函數。如:IRequestInfo analyzeRequest(byte[] request)analyzeRequest函數

我們通過如上函數可以拿到請求的細節。

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 4

5,IHttpRequestResponse

IHttpRequestResponse接口包含了每個請求和響應的細節,我們在brupsuite中的每個請求或者響應都是IHttpRequestResponse實例。通過getRequest()可以獲取請求和響應的細節信息。

我們以registerHttpListener為例進行代碼說明:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 5

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 5

如上圖所示,我們在user和webserver間建立監聽,調用HttpListener接口,獲取請求和響應的日誌。我們想要實現這個功能,最重要的是利用下圖的方法:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 7

這裡需要注意的是,如果我們沒有註冊,processHttpMessage方法是不會生效的。 processHttpMessage是處理請求和響應包的必要插件。代碼運行:processHttpMessage(inttoolFlag,booean messageIsRequest, IHttpRequestResponse messageInfo)

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 8

通過messageInfo這個參數,我們可以獲取到request和response日誌。

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 9

下圖是個demo,我們在做滲透測試的過程中,會遇到目錄字典不全的情況,我們可以將這個URI生成目錄字典,為目錄爆破做準備。

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 10

Step 3 邏輯漏洞檢測插件開發

重點的開發接口實現完畢,我們就可以進入到具體的業務場景,例如開發出邏輯漏洞的檢測插件,具體步驟如下:

確認哪些是有效的cookie值

a.在burpsuite中攔截數據包進行cookie值的獲取(注:cookie指某些網站為了辨別用戶身份而儲存在用戶本地終端上的數據)。

b.獲取到cookie值,接著是遍歷每個cookie,用單個cookie分別進行請求,根據響應的長度確定哪個cookie是有效cookie,代碼運行參考下圖:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 11

這樣可以檢測邏輯漏洞的插件的開發好啦。

那麼通過burpsuite開發出的邏輯漏洞檢測插件可以達到什麼樣的效果呢?

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 12

從上圖可以看出,數據部分是每個cookie的key的單獨請求,這些單獨請求會對應響應長度數據列表。根據響應的長度大小,我們可以確認出有效cookie。響應長度和其他長度不同的數據往往就是有效cookie。

延伸講解:針對DES和AES加密參數的邏輯漏洞挖掘

AES和DES屬於對稱加密,即用戶端和服務器端都可以找到秘鑰,我們找到密鑰即可進行邏輯漏洞測試。

某次對微信小程序進行滲透測試,burpsuite抓包時發現訂單ID參數以密文形式進行傳輸,通過反編譯微信小程序包,我發現了密鑰,密鑰的加密方法是DES加密,獲取過程參見下圖:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 13

運行如下代碼獲取訂單ID密文:

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 14

在burpsuite的檢測思路小結:

1.遍歷明文ID

2.對明文ID進行加密生成字典

3.利用burpsuite的爆破插件進行爆破。

遇到參數加密的情況並不可怕,既然是對稱加密,那麼我們一定可以在用戶端獲得密鑰,通過對js代碼進行分析往往就能夠取得密鑰。

DES和AES加密參數的邏輯漏洞挖掘插件開發tips

對消息體進行解析

analyticsRequest = helpers.analyzeRequest(messageInfo)

獲取請求頭

headers = analyzeRequest.getHeaders()

獲取參數列表

paraList=analyzeRequest.getParameters();#獲取參數列表,參數分為三種類型,URL中的參數,cookie中的參數,body中的參數。

paraList中的forpara:

這裡可以考慮對加密參數進行篩選

key= para.getName() # 獲取參數名

value= para.getValue() # 獲取參數

aesValue = aes.encrypt(value);

aesValue = URLEncoder.encode(aesvalue);

newPara=helpers.buildParameter(key, aesValue, para.getType()); #構造新的參數

updateRequest= helpers.updateParameter(new_Request, newPara); #構造新的請求包

messageInfo.setRequest(updateRequest);//設置最終新的請求包

若作為插件開發更改AES秘鑰即可。

附: 邏輯漏洞檢測插件推薦

存取控制中斷

Burplay /多會話重播-Burplay是Burp擴展,允許使用相同的修改定義重播任意數量的請求。 其主要目的是幫助查找特權升級問題。

AuthMatrix-AuthMatrix是Burp Suite擴展,它提供了一種簡單的方法來測試Web應用程序和Web服務中的授權。

自動化-由Barak Tawily開發的Jython編寫的burp套件的自動授權執行檢測擴展,旨在簡化應用程序安全人員的工作並允許他們執行自動授權測試。

AutoRepeater-使用Burp Suite重複執行自動HTTP請求。

Burp Suite的UUID問題-Burp Suite的UUID問題。

Authz-Burp插件,用於測試授權缺陷。

Paramalyzer-Paramalyzer-Burp擴展,用於大型Web應用程序滲透測試的參數分析。

問與答

Q : burpsuite 如何對App https抓包?

A : 掛上代理,訪問http://burp,下載證書並導入手機,注意手機中只能導入.cer的證書。

小伙伴們

針對本期內容和小課堂課程

如果您有哪些問題和建議,歡迎更多白帽子們

加入JSRC 安全小課堂。

小課堂開課QQ 群:464465695

下期預告:

Web安全專題(三)SRC漏洞挖掘技巧:三步走收集高質量信息

歡迎點擊【京東智聯雲】“,了解開發者社區

更多精彩技術實踐與獨家乾貨解析

歡迎關注【京東智聯雲開發者】公眾號

【JSRC小課堂】Web安全專題(二)邏輯漏洞的burpsuite插件開發 15