Skip to main content
HackTheBox machines – Ready WriteUp

HackTheBox machines – Ready WriteUp

Ready es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en Linux

Ready es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Media.

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 Ready 10.10.10.220 a /etc/hosts como ready.htb y comenzamos con el escaneo de puertos nmap.

Revisamos los puertos descubiertos y lo único que puede interesarnos ahora es el puerot 5080 que al ser un nginx será un portal web.

 

Enumeracion

Accedemos a través del navegador al puerto 5080 y obtenemos un portal con el software Gitlab:

Primer acceso al puerto 5080 de la máquina Ready

 

Como nos disponemos de una cuenta, nos creamos la misma y accedemos al portal:

Acceso a Gitlab

 

Y en primer lugar, vamos a ver la ayuda del portal, que entre otras cosas nos indicará la versión del mismo y nos dará pistas sobre que hacer a continuación:

Descubriendo la versión de Gitlab

 

Descubrimos que se trata de la versión 11.4.7 por lo que nos vamos a google a buscar si existe alguna vulnerabilidad y encontramos dos, SSRF y CRLF, y una POC bastante interesante sobre como llevar a cabo el ataque:

https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/

Además de esto, como se trata de una versión Community vamos al repositorio de código de gitlab y encontramos en github el código que identifica las correcciones realizadas para las vulnerabilidades de SSRF y CRLF.

Así que vamos a tratar de realizar el ataque. Para ello se trata en aprovechar la vulnerabilidad para poder acceder ya sea desde la importación por url o desde dentro de un proyecto añadiendo un repositorio nuevo, conectar con el servicio redis interno que escucha sólo en localhost con el objetivo de lograr un RCE en el mismo y obtener información sensible del sistema o, en su defecto, realizar la ejecución de ciertos comandos que nos ayuden a obtener acceso al servidor.

Vamos a hacer una primera prueba con la dirección de localhost, 127.0.0.1:

Comprobando la vulnerabilidad

 

Pero al realizarlo de esta forma nos da un error, por lo que utilizaremos la técnica de bypass mediante ipv6 para intentar saltar la restricción:

Comprobando la vulnerabilidad

 

Y en este caso no nos da ningún error, por lo que será la técnica utilizada para realizar la ejecución de nuestro payload, quedando entonces nuestro código completo de la siguiente forma:

Ahora ya tenemos el código completo, pero nos falta un paso más y es codificar el mismo para evitar que se bloqueado por el uso de ciertos caracteres no permitidos, así que codificamos nuestro payload y el código completo quedaría tal que así:

Ahora que ya lo tenemos generado, abrimos una escucha con netcat en el puerto que indicamos en el payload y lanzamos la creación de un nuevo proyecto, importado desde url, y cuya url será el payload que acabamos de generar.

A los pocos segundos de crear el proyecto con nuestro payload veremos en nuestra escucha como hemos obtenido acceso con el usuario git:

Como tenemos una shell bastante incómoda utilizaremos python para obtener una más adecuada y con la que nos será más fácil continuar trabajando:

Y ahora tocat enumerar, así que buscamos por el sistema y encontramos unos ficheros interesantes en la ruta /opt/backup:

Y encontramos una password en el fichero gitlab.rb

Probamos a escalar privilegios, y conseguimos con la misma escalar a root dentro del contenedor:

 

Obteniendo la flag de user

Con root dentro del contenedor, nos vamos a la home del usuario dude y obtenemos la flag de user:

Y tenemos ya la mitad de la máquina realizado.

 

Escalado de privilegios

Después de dar unas vueltas y enumerar varias veces el sistema, no encontramos nada que pueda ayudarnos por el momento a conseguir escapar del contenedor, aśi que buscamos alguna técnica en google y encontramos un post donde explica como escapar de Contenedores Privilegiados.

Así que siguiendo con la explicación vamos a crear el script para realizar la explotación y escapar del contenedor.

Necesitaremos previamente crear una clave ssh que será la que importaremos mediante el script para obtener acceso posteriormente a la máquina como root, así que generamos la nuestra y la incluimos en el script quedando así:

Subiremos entonces el script a la máquina mediante un server en python levantado en local:

Descargamos y damos permisos de ejecución:

Y ejecutamos el mismo:

Y ahora sólo nos queda acceder por ssh con nuestra clave de root:

 

Obteniendo la flag de root

Ahora que ya somos root en la máquina, nos vamos a la home del usuario y obtenemos nuestra 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

 

Deja una respuesta

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