Skip to main content
HackTheBox machines – Doctor WriteUp

HackTheBox machines – Doctor WriteUp

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

Doctor 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 Doctor 10.10.10.209 a /etc/hosts como doctor.htb y comenzamos con el escaneo de puertos nmap.

Observamos que tenemos los puertos 80 y 8089 abiertos por lo que comenzaremos revisando el portal web existente en el puerto 80.

 

Enumeración

Accedemos a través del navegador por el puerto 80 y observamos el siguiente portal web:

HackTheBox machines – Doctor WriteUp

 

Revisamos el mismo y observamos una dirección de correo info@doctors.htb, así que agregamos este dns a nuestro fichero de /etc/hosts y accedemos a dicha url para ver su contenido y encontramos un portal de login:

HackTheBox machines – Doctor WriteUp

Como no tenemos unas credenciales con las cuales acceder, probamos a registrarnos en la misma, observando el siguiente formulario:

Registro en doctors.htb

Parece que podemos registrarnos así que crearemos nuestro usuario y posteriormente nos loguearemos con el mismo consiguiendo acceder al portal y visualizar la home del mismo, la cual tiene el siguiente aspecto:

Página de inicio en doctors.htb

 

Investigamos un poco esta parte y observamos una sección donde podemos crear un post para el portal aunque no parece que podamos hacer mucho por el momento con ello.

Revisamos el código fuente y encontramos un comentario donde indica una uri que no conocíamos hasta ahora, la uri es /archive

Investigando el código fuente

 

Así que probamos a acceder a la misma pero parece que está en blanco, revisamos el código fuente de la misma y encontramos que el contenido que habíamos metido anteriormente en el post creado aparece en la misma:

Investigando el código fuente

Por lo que vamos a probar a meter un código como un nuevo objeto en la misma. Introduciremos el siguiente código en los campos de creación del post:

Y observamos que nuestro título ahora sí que aparece en la página, por lo que parece que aqui hay una vulnerabilidad:

Descubriendo vulnerabilidades

Por lo que hemos podido observar parece que se trata de la vulnerabilidad Server-Side Template Injection, pero necesitaremos realizar más pruebas al respecto para corroborar que efectivamente se trata de la misma.

Revisando por google encontramos un repositorio en github donde trata este tema e incluye una serie de ejemplos de como probarlo y de exploits para poder explotarla.

El repositorio es PayloadsAllTheThings y en la sección de jinja2 encontramos lo que necesitamos para verificar la vulnerabilidad.

Para verificarlo de una forma simple vemos el siguiente código:

Por lo que crearemos nuestro post con el siguiente contenido:

Y vemos que efectivamente devuelve en la página de /archive el código 7777777 por lo que podemos confirmar que es vulnerable.

Generaremos entonces nuestro exploit gracias a la explicación de la sección  Exploit the SSTI by writing an evil config file, por lo que nuestro payload será el siguiente:

Creamos un nuevo post con nuestro payload y recargamos la página de /archive y automáticamente obtendremos una shell en nuestra escucha en netcat:

Ya estamos dentro de la máquina pero vemos que en la home de este usuario no se encuentra la flag de user que esperábamos:

Seguiremos entonces con nuestra búsqueda y encontramos un fichero interesante en /var/log/apache2/backup donde parece que hay lo que podría ser una contraseña:

Probamos la escalada con el usuario shaun descubierto anteriormente y la contraseña que acabamos de conseguir y bingo!

Pero además del escalado, ahora parece que no tenemos una shell interactiva, utilizaremos python para conseguir una:

 

Obteniendo la flag de user

Ahora que ya hemos conseguido entrar con el usuario shaun, iremos a la home de este usuario para conseguir la flag de user:

 

Escalado de privilegios

Completado este primer paso, ahora nos queda escalar privilegios hasta root para conseguir la flag del mismo. Para intentar obtener más información del sistema utilizaremos el script linPEAS con el cual obtendremos más información del sistema.

Después de un primer vistazo observamos el usuario splunk, que ya vimos al principio que el puerto 8089 perteneciente al mismo estaba levantado, así que buscamos más información relacionada con este usuario y el servicio como tal:

Intentamos obtener más información al respecto y después de una serie de vueltas por google encontramos un exploit en github para el escalado de privilegios tanto a nivel local como remoto, por lo que nos descargaremos el mismo y lo ejecutaremos con los accesos obtenidos hasta el momento.

Descargamos el mismo y lo ejecutamos, indicando nuestro payload para obtener una shell inversa:

Y automáticamente obtenemos una shell en nuestra escucha con el usuario root:

 

Obteniendo la flag de root

Ya hemos conseguido ser root por lo que el último paso será acceder 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.