Skip to main content
HackTheBox machines – Jupiter WriteUp

HackTheBox machines – Jupiter WriteUp

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

Jupiter 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 Jupiter 10.10.11.216 a /etc/hosts como jupiter.htb y comenzamos con el escaneo de puertos nmap.

Realizamos en primer lugar un escaneo simple y rápido para detectar los puertos abiertos.

 

Y después un escaneo más completo sobre los puertos descubiertos

 

Enumeración

Una vez detectados los puertos, accedemos al portal web situado en el puerto 80 a través del navegador y vemos la siguiente página

HackTheBox machines – Jupiter WriteUp

 

En esta página no vemos nada interesante así que procedemos a enumerar directorios, ficheros, subdominios y encontramos un subdominio nuevo

 

Añadimos el subdominio kiosk.jupiter.htb a nuestro fichero hosts y accedemos a través del navegador, donde vemos el siguiente dashboard desarrollado en grafana

HackTheBox machines – Jupiter WriteUp

 

Obteniendo una shell con el usuario postgres

No parece que encontramos nada por aquí, así que vamos a interceptar la petición de carga del dashboard con burp y descubrimos una petición interesante

Abusando de postgres

 

En la carga del dashboard, hace una petición contra una base de datos en postgres, así que puede ser nuestro punto de acceso. Envíamos la petición al repeater de burp y tratamos de obtener los esquemas existentes en el servidor:

Abusando de postgres

 

No encontramos nada por aqui así que vamos a probar a ejecutar comandos a través del postgres. Lanzaremos entonces las siguientes consultas.

Creamos en primer lugar la tabla cmd_exec con la salida de nuestro comando:

A continuación lanzaremos un copy indicando el comando que queremos lanzar

Y como último paso leeremos la tabla:

Si revisamos ahora la respuesta recibida observamos que hemos obtenido el contenido del fichero passwd

Ejecución de comandos en postgres

 

Como vemos que la ejecución de comandos funciona, vamos a obtener una revshell con el siguiente comando

Y tenemos una shell con el usuario postgres

 

Escalado al usuario juno

Ahora que ya estamos dentro, vamos a mejorar nuestra shell con python

Enumeramos la máquina y descubrimos un proceso interesante con pspy que ejecuta el usuario juno cada pocos minutos

Enumeración de procesos

 

Ejecuta el script shadow-simulation.sh con la plantilla en formato yaml situada en la ruta /dev/shm y que tiene el siguiente contenido

 

Vista esta parte, revisamos los permisos del fichero, y podemos escribir sobre el

Así que vamos a cambiarlo para que copie una clave ssh nuestra al authorized_keys del usuario juno y con eso poder acceder.

Crearemos entonces nuestra clave ssh y modificaremos el fichero yml con el siguiente contenido

Esperamos 2 minutos a que se ejecute de nuevo y podremos acceder con nuestra clave.

 

Obteniendo la flag de user

Con nuestra clave añadida, accedemos con el usuario juno y cogemos la primera flag

 

Escalado al usuario jovian

Una vez dentro enumeramos y descubrimos un puerto interesante

 

Si buscamos en google, el puerto 8888, corresponde al software Jupyter notebook, así que nos enviaremos el puerto con chisel para poder acceder.

Lanzamos el server en nuestro kali

Lanzamos el cliente

Y entramos a través del navegador

Primer vistazo a jupyter notebook

 

Necesitamos un token para poder acceder a la página así que buscamos en la máquina y vamos al directorio donde se encuentran los archivos de la aplicación

Buscamos en los ficheros de log y encontramos el token que se crea cuando se levanta la aplicación

 

Así que nos vamos al portal y accedemos con el token

Accediendo a jupyter notebook

En esta página podemos ver, editar o incluso crear nuestros propios ficheros y ejecutar su contenido, así que creamos un fichero python para obtener una revshell en la máquina

Abusando de los permisos en Jupyter notebook

 

Ejecutamos y tendremos una shell con el usuario jovian en nuestra escucha

 

Escalado de privilegios

Al igual que hicimos con el anterior usuario, vamos a añadir nuestra clave ssh para no perder el acceso y tener que repetir los pasos.

Revisamos si el usuario tiene algún permiso de sudo

 

Así que probamos e ejecutarlo, aunque parece que primero necesitamos crear un fichero de configuración

 

Así que revisamos el binario con strings y encontramos dos cosas interesantes, por un lado la ruta del fichero de configuración que como no existe tendremos que crearlo

Y por otro el nombre del repositorio original del código

Así que nos iremos al github de la aplicación de arftracksat, copiaremos el fichero de configuración a la máquina y haremos una simple ejecución para ver su comportamiento

Devuelve un error debido a que necesita un display sobre el cual mostrar el contenido, pero esto no nos afecta en nuestro cometido.

Si revisamos el comportamiento del binario, crea el directorio indicado en la variable tlerrot, en caso de no existir, y sobre el cual guarda los ficheros que se le indique para su descarga remota, así que vamos a utilizarlo para añadir nuestra clave ssh al fichero authorized_keys de root.

Modificaremos entonces el fichero de configuración con el siguiente contenido:

Y lo ejecutamos.

 

Obteniendo la flag de root

Si todo ha salida correctamente, nos conectamos por ssh con el usuario root 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 *