Encadenamiento de vulnerabilidades SSRF + SSTI para obtener RCE

------------------------------------------------------------------------------------------------

Una vez accedemos al panel de administraci贸n se observa que el panel tiene una URL localhost apuntando al puerto 1337. Al parecer existe un aplicativo no accesible al publico. Usando el SSRF que encontramos anteriormente podr铆amos intentar visualizar la aplicaci贸n y tratar de encontrar vulnerabilidades.

Luego de identificar la informacion previa, se procede a visualizar el contenido del puerto 1337 usando el SSRF:

Para validar el servicio podemos usar el siguiente enlace:

http://44.199.19.36:4000/links/open?url=http://localhost:1337/?name=gerh

Al analizar algunas de las peticiones, se ve claramente que el aplicativo esta reflejando el contenido que pongamos en la variable name.

Por lo anterior, es necesario probar si adem谩s es vulnerable a ataques de inyecci贸n de template o SSTI (Server Side Template Injection).

La SSTI (Server-Side Template Injection) es una vulnerabilidad que ocurre cuando un atacante puede inyectar c贸digo malicioso en las plantillas del lado del servidor que genera el contenido HTML. Las plantillas del lado del servidor son utilizadas en muchos frameworks web para generar din谩micamente p谩ginas web a partir de datos proporcionados por el usuario o por la aplicaci贸n. Si las plantillas no est谩n correctamente validadas o sanitizadas, un atacante puede inyectar c贸digo en las mismas, lo que permitir谩 la ejecuci贸n de comandos en el servidor.

Los motores de plantillas como Jinja2 (Python), Twig (PHP), Freemarker (Java) y otros, permiten la incorporaci贸n de l贸gica y c贸digo en las plantillas. En lugar de simplemente renderizar datos, estos motores pueden ejecutar expresiones y funciones, lo que genera una amplia superficie de ataque si no se validan correctamente los datos que llegan al motor de plantillas.

驴C贸mo ocurre un ataque SSTI?

Un ataque SSTI ocurre cuando una aplicaci贸n web permite a un usuario enviar datos que luego son procesados por el motor de plantillas en el servidor. Si el motor de plantillas eval煤a directamente las entradas proporcionadas por el usuario, el atacante puede aprovecharlo para ejecutar c贸digo arbitrario en el servidor.

Por ejemplo, si una aplicaci贸n web permite que los usuarios pasen un valor a trav茅s de una URL y este valor se inserta en una plantilla para generar una respuesta HTML, un atacante podr铆a modificar ese valor para incluir c贸digo que el motor de plantillas ejecute.

http://44.199.19.36:4000/links/open?url=http://localhost:1337/?name={{7*7}}

Recomendaci贸n:

Para probar y explotar esta vulnerabilidad, puedes utilizar un conjunto de payloads conocidos que se encuentran en el repositorio PayloadsAllTheThings, espec铆ficamente en la secci贸n de Server-Side Template Injection (SSTI). Este repositorio incluye m煤ltiples payloads dise帽ados para fuzzear motores de plantillas y determinar si una aplicaci贸n es vulnerable.

Recomiendo utilizar este recurso para identificar y explotar la SSTI en la URL proporcionada:

Repositorio PayloadsAllTheThings - SSTI Fuzz:

Este archivo contiene payloads que se pueden utilizar para inyectar diferentes tipos de c贸digo y funciones que pueden ser evaluadas en los motores de plantillas.

Last updated