1. 程式人生 > 其它 >【抄】Burp Collaborator 使用總結

【抄】Burp Collaborator 使用總結

Burp Collaborator 使用總結

0x00:使用原因

我們在做滲透測試的時候,經常會遇到這種情況,測試跨站可能有些功能插入惡意指令碼後無法立即觸發,例如提交反饋表單,需要等管理員開啟檢視提交資訊時才會觸發,或者是盲注跨站,盲打 XSS 這種。再例如 SSRF,如果程式不進行回顯任何資訊,而只提示你輸入的是否合法,那麼也無法直接判斷程式存在 SSRF 漏洞,我們可以叫盲 SSRF。再例如 XXE,引入外部檔案時,如果程式也不返回任何資訊和引用檔案的內容,而只提示輸入的是否有誤,那麼也無法直接判斷程式是否存在 XXE 漏洞,我們也可以叫盲 XXE。總之,程式不進行詳細的回顯資訊,而只是返回對或者錯時,我們都可以叫它盲。

解決辦法是,我們需要一個外部的獨立的伺服器,可以通過域名 url 進行訪問。然後在測試盲跨站插入惡意指令碼時帶上這個伺服器的地址,在測試盲 SSRF 時讀取的檔案 url 寫我們這個伺服器的地址,在測試盲 XXE 時引入的外部實體地址也寫我們這個伺服器的地址。如果存在上述的這些問題,那麼目標伺服器就會去訪問我們自己的伺服器,我們自己伺服器要做的就是記錄別人訪問自己的資訊,記錄其傳送內容相應內容等,因為目標伺服器不會給前臺返回任何資訊,而在和我們外部伺服器互動時,我們外部伺服器會記錄其互動的過程和內容,從而有利於我們判斷漏洞的存在。

明白原理後,Burp 給我們提供了這個外部伺服器,叫 Collaborator,對於 Collaborator 伺服器,我們有兩種使用方式,第一個是使用 burp 官方提供的,第二個是自己搭建。本文章記錄 burp 官方提供的使用方法,至於自己搭建如果大家感興趣可以在網上搜索相關的教程內容。

0x01:Collaborator 介紹

對於 Collaborator 伺服器,我們這裡簡單介紹下它應該擁有哪些功能。首先它要能捕捉到 burp 發出的 payload 觸發目標與外部系統發生資料的互動行為,其次它自己與目標產生互動的資料要能夠返回到 burp,也就是返回給攻擊者,也就是我們。

對於 Collaborator 伺服器,我們這裡再簡單的介紹下它應該有哪些服務,首先它是公網 ip,其次它要有自己的域名,並且這個伺服器要註冊為該域名的權威 dns 伺服器。然後這個伺服器要提供 dns 服務,並且可以相應任何對它的 dns 請求。最後它需要提供 http 和 https 服務,且需要使用一個有效的 ssl 證書。對於為什麼要提供 dns 和 http、https 服務很好理解,payload 如果可以執行或者可以允許遠端載入,那麼就需要用 dns 來解析我們的域名,而產生的互動則需要 http 和 https 來提供。

0x02:Collaborator 原理

我們知道了使用原因和其具有的功能後,我們再來簡單看下它的原理,首先,我們先來看下平時的測試過程,如下圖。

平時測試時,我們會像伺服器提交一個 payload,而伺服器響應給我們相關的 response 資訊。大家都叫它帶內攻擊,這些理論的東西,我們簡單理解就好,這裡我們就理解成單挑通訊的通道為帶內攻擊,也就是整個測試過程或者說是互動過程,中間沒有其外部的伺服器參與,只有自己和目標伺服器,那麼就叫帶內。而我們一般的測試如果稱為帶內攻擊,那麼 Collaborator 伺服器用來測試盲的各種漏洞的話,則需要我們外部的獨立伺服器引數,也就是帶入了外部的伺服器,我們叫它帶外攻擊。這裡簡單的提了一下這個帶內和帶外,我們只要理解其過程即可。帶外流程圖如下。

以上就是 collaborator,也就是帶外攻擊的大體流程,其實就是在測試的過程中目標伺服器和外部的伺服器有了互動,下面再來看一張更詳細的圖。

上面這個圖可以大體的代表 collaborator 的大體工作流程,首先 burp 傳送 payload 給目標程式,以上圖為例,param 存在漏洞注入點,其 payload 為外部的伺服器 url 地址,隨後目標程式若進行解析或則引用呼叫等,則會去訪問這個地址,而這個地址是我們的 collaborator 伺服器,所以 collaborator 會記錄其訪問的請求資訊以及響應資訊和 dns 的資訊。而當 burp 傳送 payload 後,就會不斷的去問 collaborator 伺服器,你收到我傳送的 payload 互動了麼,這時 collaborator 就會將互動資訊告訴 burp,burp 最後進行報告。

以上就是 collaborator 的大體工作流程,最後我們再說兩個理論性的東西,一個是 burp 的 collaborator 地址,當使用 burp 的 collaborator 時,burp 會提供一個 url 地址,這個地址是 burp 的一個二級域名。第二個是輪詢,也就是我們上面提到的,burp 傳送 payload 後會不斷的問 collaborator 是否收到我發生的 payload 互動資訊,例如 10s 問一次,我們可以叫它輪詢,其實叫什麼無所謂,我們理解這個過程即可。

0x03:Collaborator 使用

對於 burp 的 collaborator,好像是 1.7 幾以後自帶,我這裡沒有,所以是通過安裝外掛來實現的,直接到 burp 的 extender 下的 bapp store 找到 Collaborator 安裝即可。安裝後,首先需要設定下我們使用的伺服器是官方預設提供的,在 project options-misc-burp collaborator server 下,選擇第一個預設官方服務即可,第二個是關閉 collaborator,第三個是使用自己的伺服器。如下圖。

設定好後,我們可以通過工具欄的 burp 下的 burp collaborator client 來執行,如下圖。

開啟 collaborator 外掛後,點選 copy to clipboard 來複制其提供的 payload url,如下圖。

number to generate 是生成的數量,下面的 poll now 按鈕是輪詢時間,點選 copy to clipboard 複製其提供的 payload url 後,就可以直接在要測試的點貼上即可,如果目標伺服器有互動,則 collaborator 會有響應資訊。且這個 payload url 每次複製其二級域名都會隨機生成。

0x04:盲 XXE 測試

我這裡沒有找到盲的 XXE 漏洞示例,所以就拿 bwapp 的 xxe 做演示了,bwapp 的 xxe 是有回顯資訊的,我們先來看下它的原始請求包。

原始請求傳送的 xml 內容,其 login 的名稱會進行回顯,這裡我們把它當作沒有任何回顯資訊,只返回 true 和 false 的話,我們用 collaborator 來進行測試,首先修改 xml 的內容,加入一個變數值為外部的伺服器 url,然後進行傳送,這時 collaborator 會不斷輪詢去問互動結果,而結果會在 collaborator 中進行顯示,如下圖。

上圖畫綠線的就是 collaborator 提供的 payload url,我們在原始的內容上加入了 entity 實體變數 test,值為 payload url,這時 go 傳送後,collaborator 捕獲的互動資訊如下。

上圖是 request 的內容,host 的是我們的 payload url,請求後,我們再切換到 response 欄檢視,內容如下圖。

payload url 請求會返回一串隨機內容,我們可以看到已經成功的進行了響應,說明目標伺服器進行了外部的請求和互動,那麼對於盲 xxe 來說,我們可以證明存在此問題。

0x05:盲 SSRF 測試

SSRF 在載入外部檔案時,若沒有進行嚴格過濾,則可導致任意檔案載入,若載入檔案而不反悔檔案的內容,也不反悔任何詳細的資訊,那麼對於這種盲 SSRF,我們也可以用 collaborator 進行測試,只要載入的請求替換成我們的 payload url 即可。這裡還以 bwapp 的 SSRF 為例,bwapp 的 SSRF 也是有回顯資訊的,我們還把它當成沒有任何提示的盲來進行演示。

首先還是先來看下原始的請求資料包,內容如下圖。

對於 url 中的 language 欄位引用的檔名稱,可以隨意進行替換,也算作是檔案包含問題,我們把他換成 payload url 後進行提交,此時 collaborator 會顯示出其互動的詳細資訊,resquest 如下圖。

可以看到目標伺服器進行了 dns 解析了我們的域名,然後 http 進行了訪問,response 資訊如下圖。

0x06:盲 XSS 測試

同樣的,我們也可以用 collaborator 來進行盲跨站的測試,使用場景例如盲打 xss,提交表單等,若一個平臺的提交表單功能,提交內容插入惡意指令碼後,提交後臺可能不會立即生效,需要等管理員訪問相關的頁面才會執行,那麼我們無法判斷是否存在儲存跨站的問題,這時使用 payload url 後,collaborator 會不斷的進行輪詢,只要管理員進行了訪問,collaborator 就會捕捉到然後返回到 burp。

我們這裡還以 bwapp 的 stored xss blog 為例,這裡的指令碼提交後就會在列表中顯示並執行,也是有回顯的,我們這裡還是以盲跨站來測,首先在提交內容處,插入 script 標籤,src 為我們的 payload url,如下圖。

插入後我們檢視元素可以發現,指令碼內容已經插入成功,如下圖。

因為插入的時候就會執行一次,而我們瀏覽頁面的時候又執行了一次,所以 collaborator 會又兩條記錄資訊,這裡我們當成盲 xss 來測,如果插入沒有執行,而當管理員訪問頁面後 payload 執行了。collaborator 捕捉的互動資訊如下,request 內容。

response 內容(這裡是兩條資訊,插入執行了一次,訪問又執行了一次,而我們測試盲 xss 時,是隻有一條,插入無法驗證所以沒有,管理員訪問後執行所以一次,大家不要在意這裡的細節,明白其原理和使用即可)。

以上就是 burp 的 collaborator 使用的一些簡單的總結,理論上對於盲 sql 注入也應該可以行得通,但是我沒有找到合適的例子,本機嘗試也有一些錯誤,所以就不列了,如果碰到盲注的話可以先判斷它是數字型還是字元型,隨後再通過 and、or 這些關鍵字結合查詢一下來判斷,對於 collaborator 的話,官方說明文件說可以使用 sql 去查詢 xml 檔案,xml 引入外部實體也就是 payload url,然後看互動資訊。

0x07:總結
對於平時測試中的一些盲問題,例如盲 xss,盲 xxe,盲 ssrf 等,如果不能看到一些回顯資訊,無法判斷是否存在漏洞時,可以使用 burp 的 collaborator 來進行嘗試。


————————————————
版權宣告:本文為CSDN博主「aFa攻防實驗室」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/fageweiketang/article/details/89073662

作者:starnight_cyber 出處:https://www.cnblogs.com/Hi-blog/ github:https://github.com/starnightcyber/

-------------------------------------------

個性簽名:如果世上的事都按你說的道理走 世界就不是現在這樣了!

如果覺得這篇文章對你有小小的幫助的話,記得在右下角點個“推薦”哦,博主在此感謝!