天天看點

XSLT

參考: https://book.hacktricks.xyz/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations http://repository.root-me.org/Exploitation - Web/EN - Abusing XSLT for practical attacks - Arnaboldi - IO Active.pdf

什麼是 XSLT

全稱 Extensible Stylesheet Language Transformations。xsl 是一種用于轉換處理 xml 文檔的語言。XSLT 就是指 xsl 解釋器處理 xsl 文檔的這個過程。

這是 xml,xml 是一種資料存儲的形式。

這是 xsl,用于描述如何轉換 xml 文檔的語言。

當執行時,<code>saxonb-xslt -xsl:xsl.xsl xml.xml</code> ,會獲得如下結果。<code>saxonb-xslt</code> 就是 xsl 解釋器。

可以看到,和 php 解釋器處理 php 腳本檔案這個過程很類似。我們可以用類比的方法來體會這個漏洞的原理。

php 解釋器

php 代碼

php 腳本檔案

php 處理 php 腳本

xsl 解釋器

xsl 代碼

xml 資料檔案

xslt

通過上面的對比,可以看到這個漏洞屬于代碼執行漏洞。也可以看到其實 xslt 漏洞本質就是如果在特定場景下,可以控制 xsl 代碼,進而使 xsl 解釋器 執行惡意的 xsl 代碼。

其危害取決于 xsl 語言、 xsl 解釋器支援的功能。通常來說,可以讀寫檔案、ssrf、特定情景下可以 rce。

攻擊場景

如果發現資料包中出現 <code>&lt;xsl: &gt;</code> 類似的标簽,則可以嘗試攻擊。

如何攻擊

嘗試注入 惡意 xsl 代碼。

如何防禦

和代碼執行一樣的防禦原理。

因為很少見,是以隻補一個連結,待遇到時再進行詳細學習。