其他分享
首页 > 其他分享> > XSLT

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

标签:xml,解释器,xslt,XSLT,php,xsl
来源: https://www.cnblogs.com/starrys/p/15391213.html