Server-side template injection with information disclosure via user-supplied objects
Laboratorio de Portswigger sobre SSTI
Certificaciones
- eWPT
- eWPTXv2
- OSWE
- BSCP
Descripción
Este laboratorio es vulnerable a un Server Side Template Injection debido a la forma en que se pasa un objeto a la plantilla. Esta vulnerabilidad puede ser explotada para acceder a datos sensibles. Para resolver el laboratorio, hay que obtener y enviar la api key del framework. Podemos iniciar sesión en nuestra cuenta utilizando las siguientes credenciales: content-manager:C0nt3ntM4n4g3r
Guía de SSTI
Antes de completar este laboratorio es recomendable leerse esta guía de SSTI https://justice-reaper.github.io/posts/SSTI-Guide/
Resolución
Al acceder a la web nos sale esto
Pulsamos en My account y nos logueamos usando las credenciales content-manager:C0nt3ntM4n4g3r
Pinchamos en View details en un artículo
Pulsamos en Edit Template
Vemos que hay objetos cargando
Nos dirigimos a https://cheatsheet.hackmanit.de/template-injection-table/, copiamos el primer payload y pulsamos en Preview
Nos arroja este error y vemos que se está usando django como template
Nos dirigimos a PayloadsAllTheThings y al apartado de SSTI (Server Side Template Injection) de Python https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Server%20Side%20Template%20Injection/Python.md y mediante un payload obtenemos información del template
He probado el payload {{ messages.storages.0.signer.key }} pero no ha funcionado , por lo tanto he buscado más payloads y he encontrado uno que ha funcionado en esta web https://www.wallarm.com/what/server-side-template-injection-ssti-vulnerability, si no hubiéramos encontrado nada de utilidad deberíamos haber consultado la documentación de django https://docs.djangoproject.com/en/5.1/ref/settings/ . Gracias a esta inyección podemos obtener la Secret Key de django
Pulsamos en Submit solution y enviamos la Secret Key obtenida










