Explotación de Server-Side Template Injection (SSTI) y vulnerabilidades
El Server-Side Template Injection (SSTI) es una vulnerabilidad de seguridad en la que un atacante puede inyectar código malicioso en una plantilla de servidor.

En el extremo más severo de la escala, un atacante puede potencialmente lograr la ejecución remota de código, tomando el control total del servidor back-end y usándolo para realizar otros ataques en la infraestructura interna.
Incluso en los casos en los que no es posible la ejecución remota completa del código, un atacante a menudo puede usar la inyección de plantillas del lado del servidor como base para muchos otros ataques, lo que podría obtener acceso de lectura a datos confidenciales y archivos arbitrarios en el servidor. Por ejemplo, imagina que una aplicación web utiliza plantillas de servidor para generar correos electrónicos personalizados. Un atacante podría aprovechar una vulnerabilidad de SSTI para inyectar código malicioso en la plantilla de correo electrónico, lo que permitiría al atacante ejecutar comandos en el servidor y obtener acceso no autorizado a los datos sensibles de la aplicación web.
Detección
Las vulnerabilidades de inyección de plantillas del lado del servidor ocurren en dos contextos distintos, cada uno de los cuales requiere su propio método de detección. Independientemente de los resultados de sus intentos de fuzzing, es importante probar también los siguientes enfoques específicos del contexto. Si el fuzzing no fue concluyente, una vulnerabilidad aún puede revelarse utilizando uno de estos enfoques. Incluso si fuzzing sugirió una vulnerabilidad de inyección de plantilla, aún necesita identificar su contexto para poder explotarla.
Para poder ver todo esto más claro, vamos a ir con un ejemplo práctico. Para ello vamos a emplear el laboratorio de Sam Bown.
Para mayor comodidad en las comprobaciones y revisar las peticiones enviadas y respuestas del servidor, nos pondremos con el Repeater de BurpSuite.
Como parte de la metodología de actuación en estos casos, vamos a tomar en cuenta el siguiente diagrama (PortSwigger), que nos permitirá identificar el motor de plantilla empleado por esta aplicación web.
Por tanto, trasladaremos estas comprobaciones para identificar el motor de plantilla.
Después de esta breve comprobación tendremos resuelta la primera necesidad: conocer el motor de plantilla empleado por la aplicación web.
Explotación
En esta pagina encontrareis numerosas plantillas para explotar dicha vulnerabilidad
Ahora valiendonos del atributo .__mro__ revisaremos las posibilidades de saltar por el árbol de objetos.
Ya estando en la cima de la jerarquía es momento de revisar las subclases, para ello nos valdremos de .__subclasses__(). Aquí obtendremos toda la herencia de los atributos y métodos de una clase
Emplearemos este método (file) para leer los archivos del sistema:
