Skip to main content
HackTheBox machines - PlayerTwo WriteUp

HackTheBox machines – PlayerTwo WriteUp

PlayerTwo es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox.

PlayerTwo es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Insane.

En este caso se trata de una máquina basada en el Sistema Operativo Linux.

 

Escaneo de puertos

Como de costumbre, agregamos la IP de la máquina PlayerTwo 10.10.10.170 a /etc/hosts como playertwo.htb y comenzamos con el escaneo de puertos nmap.

Una vez realizado el primer escaneo procederemos a enumerar los servicios descubiertos.

 

Enumeración

Comenzaremos por el puerto 80, el cual nos da un error al acceder, por lo que siguiendo crearemos en nuestro fichero hosts el nombre player2.htb apuntando a la ip de la máquina y accederemos al portal web que tiene el siguiente aspecto:

 

Revisando el código fuente, obtenemos otro dominio más de la máquina, así que nuevamente lo añadiremos al fichero /etc/hosts

Revisamos en profundidad el portal me no conseguimos avanzar así que investigamos el otro puerto existente, el 8545, en el cual recibimos el siguiente error al acceder:

Se trata de twirp, un software simple de RPC, y con la ayuda de google encontramos el siguiente post donde nos da más información de su funcionamiento:

https://github.com/twitchtv/twirp/blob/master/docs/routing.md

Vista la información del enlace anterior, necesitaremos encontrar el fichero .proto, en el cual viene reflejada la información del servicio, por lo que utilizamos wfuzz para intentar encontrar dicho fichero.

Realizamos la prueba con varios diccionarios hasta dar con el idóneo y conseguir el fichero generated.proto en la url http://player2.htb/proto/generated.proto, cuyo contenido es el siguiente:

 

Así que con los datos encontrados lanzaremos la petición curl con la siguiente sintaxis:

Realizamos varias pruebas y acabamos encontrando un listado de usuarios con sus passwords:

Así que a continuación accederemos a la url de product.player2.htb para intentar pasar el formulario de login:

 

Generamos un listado de usuarios y contraseñas y llevamos a cabo el ataque, consiguiendo acceder con las siguientes credenciales:

Pero llegamos a una página con un MFA, que nos bloquea el paso de nuevo:

 

Revisando los directorios existentes con dirb descubrimos que existe la url /api/totp que nos será de utilidad en este paso, y revisando el texto de la página del 2FA descubrimos que necesitamos obtener los backup codes para poder avanar, así que lanzaremos una petición con curl para intentar obtener dicho token:

Y una vez conseguido podemos saltarnos este paso y pasar la parte del login:

 

En esta página nos habla de un servicio diseñado para juegos donde encontramos, entre otras cosas, el siguiente texto:

Junto con un enlace a un fichero pdf, en el cual vemos dos cosas más, un fichero .tar y una página de subida de ficheros.

Descomprimimos el fichero .tar y encontramos los siguientes archivos:

En los ficheros info.txt y version no encontramos nada interesante así que pasamos al fichero binario y lo analizamos, en nuestro caso con radare2.

Encontramos en el mismo una función que llama a otra con un string y que posiblemente pueda ser la forma de conseguir saltar este paso:

Reversing del fichero protobs en PlayerTwo

Y buscando en google, obtenemos un post donde explica la posibilidad de parchear el fichero binario con dd en stackoverflow, así que vamos a ello.

Necesitaremos primero encontrar el string en el binario:

Crearemos un fichero llamado s en nuestro caso para subir nc a la máquina y ejecutar el mismo para conseguir nuestra reverse shell con el siguiente contenido:

Y, posteriormente, crearemos un fichero llamado shell que descargará nuestro anterior fichero y tendrá el siguiente contenido:

Completado este paso nos queda parchear el binario con dd:

Una vez parcheado el binario, crearemos de nuevo el fichero .tar con los ficheros info.txt, version y nuestro binario parcheado y lo subiremos al portal y después de varios alert:

Verificando firma en PlayerTwo

Conseguiremos que el mismo se verifique, firme y ejecute, consiguiendo con ello en nuestra escucha una shell con el usuario www-data:

En este punto comenzamos a enumerar los usuarios y procesos existentes y encontramos uno muy interesante llamado mosqquito:

Mosquitto es un agente de mensajes de código abierto que implementa el protocolo MQTT y que podemos utilizar para poder escalar privilegios tal y como indica en el siguiente post

https://blog.teserakt.io/2019/02/25/securing-the-mosquitto-mqtt-broker/

Así que ejecutamos el siguiente comando para intentar descubrir más información del sistema:

Y da la casualidad, de que en el mismo obtenemos una clave ssh:

 

Obteniendo la flag de user

Con la clave ssh obtenida, probamos con los usuarios descubiertos en el fichero /etc/passwd y logramos acceder a la máquina con el usuario observer:

Y conseguimos la flag de user, bueno está siendo dura esta máquina, y aún nos queda la mitad de la misma.

 

Escalado de privilegios

Llegamos a este punto, volvemos a enumerar a ver si podemos obtener algo en claro en esta máquina y encontramos unos ficheros interesantes en la ruta /opt/Configuration_Utility

Nos descargaremos dichos ficheros y utilizaremos la utilidad patchelf para utilizar las librerías de nuestro sistema en lugar de las incluidas en el mismo:

Obtendremos el código del binario mediante reversing utilizando la herramienta ghidra, para conocer que es lo que hace realmente el mismo.

Una vez analizada esta parte y descubiertas las vulnerabilidades generamos nuestro propio exploit en python y lo ejecutamos:

Consiguiendo root después de algunos minutos.

 

Obteniendo la flag de root

Una vez dentro como root sólo nos queda ir a su home y conseguir la flag:

Y ya tenemos nuestra flag de root para completar esta máquina y conseguir nuestros puntos.

 

Si eres usuario de HackTheBox y te gustó mi writeup, por favor, dame respeto en el siguiente enlace https://www.hackthebox.eu/home/users/profile/103792

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *