XSLT Server Side Injection (Extensible Stylesheet Language Transformations)

从零开始学习 AWS 黑客技术,成为专家 htARTE(HackTricks AWS 红队专家)

基本信息

XSLT 是一种用于将 XML 文档转换为不同格式的技术。它有三个版本:1、2 和 3,其中版本 1 是最常用的。转换过程可以在服务器端或浏览器内执行。

最常用的框架包括:

  • 来自 Gnome 的 Libxslt

  • 来自 Apache 的 Xalan

  • 来自 Saxonica 的 Saxon

为了利用与 XSLT 相关的漏洞,需要在服务器端存储 xsl 标签,然后访问该内容。有关此类漏洞的示例已在以下来源中记录:https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/

示例 - 教程

sudo apt-get install default-jdk
sudo apt-get install libsaxonb-java libsaxon-java
xml.xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>CD Title</title>
<artist>The artist</artist>
<company>Da Company</company>
<price>10000</price>
<year>1760</year>
</cd>
</catalog>

执行:

指纹识别

并执行

读取本地文件

SSRF

服务器端请求伪造

版本

根据使用的XSLT版本,可能会有更多或更少的功能:

指纹

上传此文件并获取信息

SSRF

服务器端请求伪造

JavaScript注入

目录列表(PHP)

Opendir + readdir

断言(var_dump + scandir + false)

读取文件

内部 - PHP

内部 - XXE

通过HTTP

内部(PHP函数)

端口扫描

写入文件

XSLT 2.0

Xalan-J扩展

其他写入PDF文件的方法

包含外部XSL

执行代码

php:function

使用其他框架在PDF中执行代码

在这个页面,您可以找到其他语言中RCE的示例: https://vulncat.fortify.com/en/detail?id=desc.dataflow.java.xslt_injection#C%23%2FVB.NET%2FASP.NET (C#,Java,PHP)

从类中访问PHP静态函数

以下函数将调用类XSL的静态方法stringToUrl

更多有效载荷

暴力检测列表

参考资料

从零开始学习AWS黑客技术,成为专家 htARTE (HackTricks AWS Red Team Expert)!

最后更新于