Skip to main content
HackTheBox machines – Jewel WriteUp

HackTheBox machines – Jewel WriteUp

Jewel es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox basada en linux

Jewel 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 Jewel 10.10.10.211 a /etc/hosts como jewel.htb y comenzamos con el escaneo de puertos nmap.

Observamos que existen dos puertos abiertos con portales web en el 8000 y en el 8080, así que como no tenemos claves para el acceso por ssh comenzaremos revisando los sites existentes en estos puertos.

 

Enumeración

En primer lugar accederemos al portal existente en el puerto 8080 donde vemos la siguiente página web de un blog

Blog website

No vemos mucho al respecto en este portal, aparte de una sección de registro y otra de login, así que creamos nuestra cuenta y nos logueamos.

Login on blog

Revisamos de nuevo el portal, pero esta vez logueados, pero seguimos sin descubrir nada interesante así que procederemos a observar el siguiente puerto descubierto, el 8000.

Accedemos a la página en dicho puerto y encontramos un repositorio de código:

Repositorio del blog

Donde observamos que está el código del blog que vimos en el puerto 8080 aśi que vamos a revisar el código fuente del mismo a ver si encontramos alguna vulnerabilidad y obtenemos que el portal está basado en el lenguaje ruby y el fichero Gemfile donde podemos obtener información de la versión utilizada:

Repositorio del blog

Así que leemos el mismo y bingo, descubrimos que la versión de ruby es la 2.5.5 y la de rails la 5.2.1.1

Repositorio del blog

 

Ahora que conocemos las versiones del blog nos toca googlear un poco a ver si conseguimos encontrar alguna vulnerabilidad interesante en dichas versiones y encontramos en concreto una, la CVE-2020-8165 que está explicada en el siguiente enlace:

https://nvd.nist.gov/vuln/detail/CVE-2020-8165

Y para la cual encontramos una forma de explotarla en el repostorio de github de masahiro331.

En nuestro caso hemos montado un contenedor en docker con las versiones que indica en el repositorio he instalado las mismas y generaremos nuestro payload añadiendo el siguiente código:

Así que lanzamos los comandos para generar nuestro payload:

Generando nuestor payload, el cual quedaría de la siguiente forma:

Ahora que tenemos generado nuestro payload necesitaremos enviarlo a la página a través del formulario de cambio de nombre de usuario para ejecutar nuestra reverse shell y obtener acceso a la máquina, utilizaremos para esto burp suite.

Así que procederemos a enviar el formulario, capturaremos la petición con burp y cambiaremos el nuevo nombre de usuario por nuestro payload:

Cargando nuestro payload

 

Completado este paso, nos vamos a la página de inicio y recargamos y conseguiremos una shell con el usuario bill:

 

Obteniendo la flag de user

Teniendo ya acceso con el usuario bill, sólo nos queda ir a la home de este usuario y conseguir la flag de user:

Primer paso hecho, ahora nos queda escalar a root.

 

Escalado de privilegios

Teniendo acceso con el usuario bill, revisamos los usuarios existentes y probamos a comprobar los permisos de sudo de este usuario, pero necesitamos de una contraseña para realizar este paso:

Así que primero necesitaremos encontrar la misma. Analizamos el sistema y encontramos un fichero interesante en la ruta /var/backups:

Revisamos el fichero dump_2020-08-27.sql y dentro del mismo encontramos unas credenciales del usuario bill entre otras:

Así que guardamos el hash del usuario bill en un fichero y se lo pasamos a John para intentar descifrar el mismo:

Y conseguimos descifrar la misma a los pocos segundos. Ahora para disponer de una shell en mejores condiciones, nos vamos a la home del usuario y añadiremos nuestra clave ssh y accederemos mediante la misma para continuar analizando la máquina.

Revisamos la home del usuario y encontramos un fichero muy interesante con respecto a la contiguración del mfa de google:

Y cuyo contenido es el siguiente:

Así que añadiremos el addon de google authenticator en nuestro google chrome y procederemos a añadir la clave indicada en el fichero.

Google authenticator

Y ya tenemos el otp configurado:

Google authenticator

 

Así que volveremos a intentar revisar los permisos del usuario. Nos solicitará dos credenciales, la clave del usuario y el código otp:

Pero el mismo nos da un error. En esta parte perdí bastante tiempo en comparación con el resto de la máquina y después de revisar en el foro de htb, el problema venía por una mala sincronización de la máquina con respecto a la nuestra así que revisaremos la zona geográfica y la hora configuradas en la máquina:

Y si la comparamos con la de nuestro equipo es diferente por lo que puede ser la razón de que no consigamos ver los permisos del usuario.

Procederemos entonces a ajustar la zona horaria y la hora de nuestro sistema a la misma utilizada en la máquina jewel:

Y volveremos a probar a revisar los permisos:

Y ahora sí que conseguimos visualizar los mismos.

Como vemos tenemos permisos de sudo sobre /usr/bin/gem por lo que buscamos en gtfobins algún exploit que podamos ejecutar para el escalado de privilegios y encontramos el siguiente:

Así que probamos a ejecutar el mismo:

Y conseguimos escalar a root.

 

Obteniendo la flag de root

Ahora que ya tenemos permisos de root sólo nos queda ir a la home de este y 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 *