Skip to main content
HackTheBox machines – Laboratory WriteUp

HackTheBox machines – Laboratory WriteUp

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

Laboratory es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad fácil.

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 Laboratory 10.10.10.216 a /etc/hosts como laboratory.htb y comenzamos con el escaneo de puertos nmap.

Observamos dos puertos pertenecientes a un servicio web, 80 y 443, así que comenzaremos la enumeración analizando los portales web mencionados.

 

Enumeracion

Accedemos al portal web en el puerto 80 y automáticamente nos redirecciona a https://laboratory.htb mostrando el siguiente portal:

 

Analizamos el portal pero no vemos nada relevante así que añadimos el subdominio descubierto a través de nmap y accedemos a la url git.laboratory.htb donde vemos el siguiente portal de login/register

 

Se trata de un portal de GitLab en su versión Community Edition aunque no disponemos de credenciales de acceso por lo que nos registramos en el portal y accedemos observando la siguiente pantalla de inicio:

 

Revisamos un poco el portal por encima y nos detenemos en la ayuda del mismo donde nos muestra la versión instalada actualmente y que nos ayudará a continuar en nuestra investigación:

 

Se trata de la versión 12.8.1 de GitLab CE, así que buscamos en google y encontramos una vulnerabilidad importante acerca de la lectura arbitraria de ficheros por lo que procederemos a explotar la misma.

La vulnerabilidad puede verse en el siguiente enlace: Gitlab Arbitrary file read

Siguiendo con la explicación del post, para verificar que es vulnerable necesitaremos realizar los siguientes pasos:

  1. Crear dos repositorios
  2. Crear un issue en uno de los repositorios
  3. Mover el issue al otro repositorio

Así que vamos a ello, crearemos en primer lugar los dos repositorios, en nuestro caso los hemos llamado test1 y test2

 

Posteriormente crearemos un issue en el repositorio test1 y le incluiremos el siguiente código en la descripción del mismo para obtener el fichero passwd:

 

 

Una vez creada la issue, moveremos la misma al repositorio test2:

 

Y automáticamente el texto introducido se convertirá en un enlace al fichero passwd, el cual podremos descargar para visualizar el contenido del mismo:

 

A su vez, en el mismo post, se explica otra vulnerabilidad, en este caso la realización de un RCE (Remote Command Execution) la cual aprovecharemos para ejecutar una shell inversa en la máquina.

En este caso crearemos primero un issue para obtener el fichero secrets de la instalación de gitlab-rails utilizando el siguiente código en la descripción del issue:

Y a continuación, necesitaremos generar las cookies con el código utilizado para obtener la shell inversa, así que en nuestro caso hemos levantado un contenedor en docker para la generación de nuestro entorno.

Así que generamos y accedemos a nuestro contenedor:

Editamos el fichero secrets.yml con los datos obtenidos anteriormente:

Y lanzamos la consola de rails con:

Ahora necesitaremos ejecutar los comandos indicados en el post para la generación de la cookie, en nuestro caso han sido dos. El primero nos generará un fichero en /tmp con el comando para la ejecución de la shell:

Y el segundo para la ejecución de nuestro script:

Una vez generadas las dos cookies, las codificamos en url mediante la utilidad existente en la herramienta burp suite y las enviaremos mediante el siguiente comando de curl:

Y obtendremos automáticamente una shell en nuestra escucha con el usuario git:

Ahora que ya tenemos acceso y, como descubrimos anteriormente los usuarios existentes en el fichero passwd, abriremos la consola de rails:

Y modificaremos la password del usuario dexter para acceder a su cuenta a través del portal:

Ahora accedemos al portal con la contraseña que indicamos y vemos dos repositorios, SecureWebsite y SecureDocker:

Revisamos los mismos y encontramos la clave ssh del usuario dexter en el repositorio SecureDocker:

 

Con la clave obtenida sólo nos queda loguearnos con dicho usuario.

 

Obteniendo la flag de user

Accedemos con el usuario dexter y la clave ssh obtenida y obtenemos la flag de user en la home del usuario:

 

Escalado de privilegios

Ahora que ya tenemos la flag de user y un usuario con algunos permisos más, subiremos el script de LinPEAS al servidor para analizar el mismo y enumerarlo, descubriendo un fichero con permisos SUID muy interesante:

Analizamos el mismo con ltrace y descubirmos una vulnerabilidad en el mismo:

Se trata de una vulnerabilidad de path hijaking y esta se debe a que está llamando al fichero chmod pero sin especificar el path absoluto del mismo, por lo que puede sernos de mucha utilidad para conseguir escalar privilegios ya que el binario de docker-security se ejecuta con el usuario root.

Así que crearemos un fichero temporal donde añadiremos nuestro fichero chmod y le daremos permisos de ejecución:

Una vez hecho, lo añadiremos a la variable PATH:

Y completaremos el escalado a root:

 

Obteniendo la flag de root

Ahora que somos root, sólo nos queda ir a la home del mismo para conseguir 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 *