Notas de Luis

Máquina GOODGAMES

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

computing/hacking/ctf/hackthebox/maquina_goodgames.txt · Última modificación: por 127.0.0.1