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 是一種數據存儲的形式。

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <cd>
        <title>CD Title</title>
    </cd>
</catalog>

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

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <html>
    <body>
    <h2>The Super title</h2>
    <table border="1">
        <tr>
        <td><xsl:value-of select="catalog/cd/title"/></td>
        </tr>
    </table>
    </body>
    </html>
</xsl:template>
</xsl:stylesheet>

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

<html>
   <body>
      <h2>The Super title</h2>
      <table border="1">
         <tr>
            <td>CD Title</td>
         </tr>
      </table>
   </body>
</html>

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

php 解釋器 php 代碼 php 腳本文件 php 處理 php 腳本
xsl 解釋器 xsl 代碼 xml 數據文件 xslt

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

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

攻擊場景

如果發現數據包中出現 <xsl: > 類似的標簽,則可以嘗試攻擊。

如何攻擊

嘗試注入 惡意 xsl 代碼。

如何防御

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

利用姿勢

因為很少見,所以只補一個鏈接,待遇到時再進行詳細學習。

https://book.hacktricks.xyz/pentesting-web/xslt-server-side-injection-extensible-stylesheet-languaje-transformations


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM