XSLT Server Side Injection (Extensible Stylesheet Language Transformations)
基本信息
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 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:
更多有效载荷
暴力检测列表
参考资料
最后更新于