用途:检测用户输入被服务端模板渲染时产生的 SSTI 漏洞,识别模板引擎并尝试升级为远程代码执行(RCE)以确认影响。适用于输入出现在姓名、主题行、自定义报表模板、URL 路径或 HTTP 头等场景,以及响应出现 {{7*7}} 返回 49、报错提及模板引擎名、或目标基于 Flask/Django、Laravel/Symfony、Spring/Thymeleaf、Rails/ERB、Pug/Nunjucks 等情况。
主要能力:注入多语言探针与引擎专用载荷;通过报错或数学输出指纹识别引擎(Jinja2、Twig、Freemarker、Velocity、Smarty、Thymeleaf、ERB、Pug、Nunjucks);针对各引擎构造 RCE 载荷并捕获响应;记录影响等级与修复建议。
使用方式:需安装 curl,具备目标 HTTP/HTTPS 访问权限,并知道反射输入的参数名。输入变量包括 TARGET_URL、PARAM、METHOD(GET/POST)、EXTRA_HEADERS。流程为:确认反射、发送多语言探针与数学探针、指纹识别引擎、构造引擎专用 RCE 载荷、记录影响与修复。示例命令:curl -s -X GET "${TARGET_URL}?${PARAM}=${encoded}" --max-time 10。
限制:仅在获得书面授权时进行 RCE 尝试;Jinja2 子类索引随 Python 版本变化,需先枚举子类;Thymeleaf 仅在用户输入进入 th: 属性或 Spring EL 表达式上下文时可利用;WAF 或输入校验可能拦截模板语法,需尝试混淆;无匹配引擎时需检查报错与响应头,或尝试 Velocity、Mako 载荷。可参考 tplmap 进行自动化多引擎检测与利用。