LELexEdge词汇锋面
网络安全专业术语

SSTI

Server-Side Template Injection

SSTI · 在模板里注入代码

攻击/渗透应用安全
SSTI
定义
SSTIServer-Side Template Injection网络安全领域的专业术语SSTI 通过向服务端模板引擎(Jinja2、Twig 等)注入恶意表达式,可能实现远程代码执行。

最后更新:2026-03-18

什么是SSTI?

SSTI 通过向服务端模板引擎(Jinja2、Twig 等)注入恶意表达式,可能实现远程代码执行。当用户输入被直接拼接到模板中时就会产生此漏洞。

  • 利用模板引擎执行恶意代码
  • Jinja2、Twig、Freemarker 是常见目标
  • 可从信息泄露升级到 RCE

SSTI详解

SSTI 的检测方法是注入数学表达式(如 {{7*7}}),如果返回 49 则存在漏洞。不同模板引擎的利用方式不同,Jinja2 可通过 __class__.__mro__ 链访问 os 模块执行命令。防御方式:使用沙箱模式、避免将用户输入直接拼接到模板、使用逻辑无关的模板引擎。

SSTI的应用场景

正式定义

利用服务端模板引擎注入恶意表达式的代码注入攻击

应用场景

  • Web 应用的模板注入检测
  • 渗透测试中的 RCE 利用链
  • 模板引擎的安全配置审计

常见误区

  • SSTI 不只是 XSS,它在服务端执行,危害更大
  • 不同模板引擎的利用方式完全不同
  • 沙箱模式不是万能的,很多沙箱可以被绕过

实际案例

📌 Jinja2 SSTI

攻击者注入 {{config.__class__.__init__.__globals__['os'].popen('id').read()}} 在 Jinja2 模板中执行系统命令。

SSTI的参考来源

关于SSTI的常见问题

SSTI 能造成什么危害
通常可以直接实现 RCE,因为模板引擎往往能访问底层语言的对象和方法,危害等级很高。
怎么检测 SSTI
在输入中注入模板表达式(如 {{7*7}}),如果返回 49 说明存在 SSTI,不同模板引擎语法不同。