Spain

Máquina Spain de DockerLabs

Autor: Darksblack

Dificultad: Dificil

Spain

Reconocimiento

Comenzamos con un escaneo de nmap:

Tenemos 3 puertos abiertos:

Puerto 22: OpenSSH 9.2p1

Puerto 80: Apache httpd 2.4.62

Puerto 9000: Servicio Desconocido

ademas, como se ve en el escaneo, hay un dominio "spainmerides.dl", por lo que lo añadiremos al /etc/hosts de la siguiente manera:

Fuzzing web

Luego de revisar la página y no encontrar nada útil, se me ocurre realizar fuzzing con gobuster:

si vamos a manager.php, veremos que hay un archivo para descargar llamado "bitlock", por lo que nos lo descargaremos.

Intrusión

Binary test

Al ejecutar file y pasarle el binario vemos lo siguiente:

esto significa que el binario es un ejecutable de 32 bits, y según checksec, no tiene protecciones:

Ahora vamos a ejecutarlo para un uso normal y ver un poco su funcionalidad:

como vemos está esperando conexiones por el puerto 9000, por lo que probablemente también sea el binario que se encuentra ejecutado en la máquina. También, si nos conectamos mediante telnet, y enviamos una cantidad grande de datos:

veremos lo siguiente en el binario:

Esto significa que presenta una vulnerabilidad de buffer overflow, y como el binario no tiene protecciones, podremos armar un exploit que nos permita recibir una conexión al ejecutar una reverseshell en el.

Buffer Overflow

Comenzaremos a crear nuestro exploit, para esto empezaremos con la base del mismo:

Listo, ya tenemos la base del exploit, ahora necesitaremos de gdb para poder depurar el binario:

(Para que sea mas sencillo, se puede instalar Pwndbg)

en gdb ejecutamos run y el binario estará iniciado, ahora solo nos queda ejecutar el exploit y ver que ocurre:

Como vemos, el EIP se ha rellenado con nuestro pattern, por lo que ahora podemos obtener el valor del offset usando la herramienta pattern_offset de metasploit:

Perfecto, ya tenemos el offset, vamos a actualizar el exploit para poder tomar el control del EIP:

Resultado:

Perfecto, ya logramos tomar el control del EIP, ahora necesitamos ver en donde se guardan los nops que enviemos para saber como ejecutar nuestro shellcode:

Resultado:

ESP

Como vemos, nuestros nops se estan almacenando al principio de la pila, esto significa que podemos intentar utilizar la dirección del gadget jmp esp el cual hace un salto a "esp" y así poder ejecutar nuestro shellcode. Para saber la direccion de jmp esp utilizaremos la herramienta nasm_shell de metasploit y objdump:

Perfecto, ya tenemos la dirección:

Ahora solo nos queda crear un shellcode con metasploit y actualizar el exploit:

Ahora si, teniendo el shellcode actualizamos el exploit:

Probamos a escuchar por el puerto 9090 con nc y a ejecutar el exploit:

perfecto, como vemos la shell nos llega correctamente, por lo que ahora si, finalmente vamos a volver a actualizar el exploit pero para que apunte a la maquina victima:

lo ejecutamos y recibimos una conexion desde la maquina victima:

Escalada De Privilegios

www-data

Si ejecuto sudo -l veo lo siguiente:

Viendo esto, intento leer el archivo .py y veo lo siguiente:

primero activo la serialización en el archivo .conf:

luego de buscar encontré el siguiente exploit el cual nos puede ayudar a crear el archivo .pk1:

nosotros lo debemos modificar de la siguiente manera para poder ejecutar otro comando y hacer que el archivo quede en /opt/data.pk1 como pide el script de python que podemos ejecutar como maci:

lo ejecutamos, y finalmente ejecutamos el script como maci para escalar a maci:

Maci

Nuevamente ejecutamos sudo -l y vemos lo siguiente:

Con dpkg tenemos una manera muy facil de escalar:

cuando nos aparezca mucha info, introducimos lo siguiente:

Darksblack

Ahora tendremos una shell como darksblack, el problema es que nuestra variable "PATH" esta mal, por lo que tendremos que repararla. Para esto haremos lo siguiente:

luego reiniciamos la shell y ya estaríamos de manera relativamente cómoda. Si nos fijamos en la home, existe un binario llamado "Olympus". Si a este lo revisamos con strings veremos que al parecer ejecuta otro binario en /home/darksblack/.zprofile/OlympusValidator, este lo pasamos a nuestra máquina local con python3 -m http.server 9090 y lo descargamos.

Ingenieria inversa

Para esto necesitaremos ghidra en el cual importaremos el archivo, luego de revisarlo un poco, veo que el serial que espera es el siguiente:

y si ejecuto el binario y le paso ese serial me dice lo siguiente:

por lo que para escalar a root vamos a nuestra maquina local y nos conectamos por ssh de la siguiente manera:

e introducimos la contraseña "@#*)277280)6x4n0"

Root

Root

Gracias por leer ;)

Última actualización