Agent Skills
返回列表
🔒

XSLT注入测试手册

IT 运维与安全 更新于 2026.08.29

将以下提示词粘贴到你的 AI 对话框中:

请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/xslt-injection-lr-saow。

技能介绍

要解决的具体问题

服务端 XSLT 处理器会把攻击者可影响的样式表编译并在本机执行。一旦样式表不可信,它能触发跨域文件读取、解析外部实体、调用扩展接口,甚至通过 document() 向任意 URL 发起请求。

很多团队只关注 XML 外部实体(XXE),却忽略了 XSLT 场景下的注入路径。本技能把这类风险拆成可操作的测试步骤,并要求在授权范围内使用。

技能如何工作

1. 处理流程

  • 处理器族映射:先确定 Java、.NET、PHP 或 libxslt 等处理器类型。
  • 能力匹配:不同处理器的安全机制差异很大,例如 Java 可通过安全管理器限制文件访问,libxslt 则依赖编译参数。
  • 载荷构造:针对具体处理器拼接文档读取、外部实体、EXSLT 扩展或脚本/扩展函数等载荷。

2. 核心机制

  • 文档读取:document(file:///etc/passwd) 可尝试读取服务端文件。
  • 外部实体:通过 <!DOCTYPE> 声明外部实体,可能触发 SSRF 或本地文件泄露。
  • EXSLT 扩展:exsl:document() 等扩展函数在部分实现中可用。
  • 脚本与扩展函数:Java 可调用扩展类,.NET 可使用 msxsl:script,libxslt 可通过 xsl:function 加载 C 扩展。

3. 跨技能路由

  • 如果输入只是通用 XML 解析,且不一定进入 XSLT 流程,可参考 xxe-xml-external-entity。
  • 如果关注 document(http://...) 引发的出站请求,可参考 ssrf-server-side-request-forgery。

适用边界与注意点

  • 仅限授权测试:部分载荷具有破坏性,请先确认授权范围。
  • 非所有环境适用:某些处理器默认禁用脚本或外部访问。
  • 输入路径识别:先确认数据是否真的进入 XSLT 编译,避免误报。

使用场景

  • 审计Java服务XSLT编译入口时,验证document()能否读取本机文件
  • 排查.NET服务中样式表是否触发外部实体或出站document()请求
  • 测试libxslt环境是否允许EXSLT扩展函数或脚本执行
  • 确认PHP服务XSLT处理流程中攻击者可控样式表的注入路径

适合人员

  • 安全审计工程师:需定位XSLT注入点并验证载荷有效性
  • 后端开发工程师:需排查XSLT处理流程中的安全风险
  • 渗透测试人员:需在授权范围内执行XSLT注入测试