Hacemos el escaneo de nmap, donde vemos que tiene abierto sólo el puerto 80:
Y ahora vamos a hacer el escaneo exhaustivo del puerto que tiene abierto, que es el 80:
Y si accedemos al navegador con esta IP vemos que es una web de juegos:
Si intentamos iniciar sesión con una inyección SQL vemos que no podemos:
Pero podemos enviar igualmente este login con los caracteres especiales utilizando burpsuite, donde esta vez pondré un correo válido para que se envíe la petición y sea interceptada por burpuite:
Pulsamos control + r para enviar la petición al repeater y verlo todo en tiempo real:
Y en la parte del email podemos enviar un intento de inyección SQL:
Y en la respuesta podemos ver que la inyección fue exitosa:
Entonces ahora si lanzamos la petición con esta inyección, veremos cómo hemos iniciado sesión:
Ahora que estamos logueados, si intento entrar dentro de la rueda de los ajustes, me dará un error:
Pero sin embargo se nos muestra la dirección donde debemos ir:
Para ello tenemos que modificar el fichero etc/hosts para que la IP apunte a este dominio y podamos entrar:
Y ahora ya hemos podido acceder correctamente a esta dirección:
Ahora en este punto vamos a utilizar sqlmap para obtener las credenciales para acceder, pero debemos hacerlo en el login del principio:
Para ello interceptamos la petición con burpsuite y guardamos el contenido de la petición en un documento .txt:
Lo pasamos a un bloc de notas:
Y ahora ejecutamos este primer comando con sqlmap para conocer las bases de datos:
Y ya tenemos las dos bases de datos:
Ahora vamos a conocer las tablas de la base de datos main:
Y nos encontró estas 3 tablas, que la interesante es la de user:
Ahora vamos a acceder a las columnas de la tabla users:
Y ya tenemos el resultado:
Y ahora vamos a acceder a los registros de cada una de estas columnas:
Y nos encontró esta credencial, aunque viene hasheada:
El hash identifier nos dice que es MD5:
Pegaremos la contraseña hasheada en un txt para descifrarla con john the ripper:
Y ahora que ya sabemos que la clave está cifrada con MD5, si utilizamos este comando con john the ripper y aplicando el diccionario rockyou.txt que lo tenemos situado en el escritorio, se nos habrá descifrado la clave: John The Ripper
Ahora ya podemos iniciar sesión:
Ya estamos dentro:
Ahora vamos al menú de ajustes para ver si es vulnerable a server site template injection, ya que en el nombre se llega a multiplicar el 7 por 7:
Ahora el siguiente objetivo es ejecutar comandos dentro de este recuadro de full name, para ello vamos a utilizar un payload que podemos encontrarlo dentro de un repositorio de github donde se ubican los payloads más utilizados:
Filtramos dentro de go to file por server side template injection:
Y buscamos esto para localizar payloads que nos sirvan para ejecutar código remoto:
Y aquí podemos elegir el que queramos:
Y habremos comprobado que tenemos la opción de ejecutar comandos remotamente, en este caso ejecutamos el comando para conocer el id:
Pero yo puedo ejecutar cualquier comando en vez del id, entonces voy a poner
hostname -i para conocer la IP:
Ahora que ya conocemos la IP y vemos que tenemos ejecución remota de comandos, vamos a comprobar si hay conectividad entre esta máquina y la mía, para ello lanzo un ping remotamente y en mi máquina la pongo a escuchar por la interfaz que está conectada a hackthebox:
Lo ponemos a escuchar:
Y ahora hago un ping de la máquina remota a mi máquina host en la interfaz de hackthebox:
Y vemos que el ping lo recibimos por la interfaz tun0:
Ahora vamos a obtener una consola remota a esta máquina, para ello lo primero será crear un archivo html con un código que vamos a compartir con esta máquina e inyectar nuestro código:
Y aquí insertamos nuestro código que lo que hace es compartir una consola con nuestra dirección IP (es la IP de la interfaz de hackthebox que estamos utilizando):
Y ahora este código lo vamos a compartir por el navegador por el puerto 80:
De tal forma que ahora estamos compartiendo este fichero:
Y ahora es cuando lanzamos un curl desde la web para que reciba este código y nos envíe una bash a nuestra máquina host:
Y debemos asegurarnos de estar escuchando por el puerto 443 que hemos definido en nuestro html desde nuestro equipo host:
Y ahora ya tenemos la conexión remota desde netcat que lo teníamos escuchando:
Ahora que estamos dentro de este contenedor de docker, vamos a navegar por los directorios hasta llegar a la flag:
No obstante ahora estamos dentro de un contenedor de docker, por tanto debo obtener acceso a la máquina víctima, por tanto haremos un ping desde el contenedor a la máquina real, y vemos que hay conectividad:
También podemos ejecutar el comando ifconfig para conocer la IP del contenedor:
Vamos a detectar puertos internos en uso con un script de Python, el cual será este:
import sys import socket if len(sys.argv) == 2: target = sys.argv[1] else: print("Indica la IP a escanear. Ej: portScan 10.10.10.1") try: for port in range(1,65535): s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket.setdefaulttimeout(1) result = s.connect_ex((target,port)) if result ==0: print(f"Port {port} is open") s.close() except socket.error: print("[-] Servidor no responde") sys.exit()
Este script nos lo compartimos al contenedor de la máquina víctima:
Y lo descargamos desde la misma:
Y ahora ejecutamos este script y nos dice que tanto el puerto 22 y 80 están abiertos:
Por tanto, ya que vemos que el puerto 22 que es el puerto de ssh está abierto, vamos a probar en iniciar sesión como el usuario Augustus y con la contraseña que antes encontramos (superadministrator):