Skip to main content
HackTheBox machines – Drive WriteUp

HackTheBox machines – Drive WriteUp

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

Drive es una de las maquinas existentes actualmente en la plataforma de hacking HackTheBox y es de dificultad Difí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 Drive 10.129.123.20 a /etc/hosts como drive.htb y comenzamos con el escaneo de puertos nmap.

Descubiertos los puertos lanzamos un segundo escaneo más detallado

 

Enumeración

Accedemos a través del navegador al portal web en el puerto 80 y vemos la siguiente página web

HackTheBox machines – Drive WriteUp

 

Navegamos por la misma y encontramos una página con ficheros en la uri /home

HackTheBox machines – Drive WriteUp

 

Y podemos visualizar el fichero a través de la url

HackTheBox machines – Drive WriteUp

 

Navegamos por la página, creamos una cuenta y vemos que podemos realizar diferentes acciones, crear ficheros, actualizarlos, bloquearlos o desbloquearlos, pero seguro que hay algún fichero más.

Así que realizaremos un ataque de enumeración, debido a que necesitamos estar logueados y por sencillez utilizamos burp ya que lo teníamos abierto para las pruebas y detectamos varios ficheros más a los cuales no tenemos acceso

Enumerando con burp

 

 

Probamos con las diferentes uris encontradas y vemos que no hay validación con la uri /block y conseguimos leer un fichero

Aprovechando la falta de validación

 

Leemos todos los ficheros y encontramos en uno una parte interesante que habla acerca de unos backups

Recuperando ficheros del admin

 

Y en otro encontramos unas credenciales que vamos a utilizar para conectar por ssh con el usuario martin

 

Escalado al usuario tom

El usuario martin no puede leer la flag así que necesitaremos enumerar y escalar a otro usuario para poder obtenerla.

Revisamos los backups que mencionaba en uno de los ficheros del portal

Pero no podemos extraer su contenido debido a que nos solicita una password que no tenemos, así que seguimos con la enumeración y encontramos un portal web en el puerto 3000

Levantamos chisel

Nos mandamos el puerto a local

Y accedemos viendo que se trata de gitea

Acceso inicial a gitea

 

Accedemos al mismo con las credenciales obtenidas, pero añadiendo al usuario el dominio de correo quedando

Y vemos el repositorio donde se encuentra el script que realiza el backup

Acceso al repositorio de DoodleGrive

 

Revisamos el script y tenemos la password

Revisión del script de backup

 

Así que descargamos los ficheros

Extraemos su contenido

 

Y vemos que en los mismos hay diferentes versiones de una misma base de datos en sqlite así que abrimos uno de ellos y encontramos varios hashes

 

Guardamos todos los hashes sha1 en un fichero y los pasamos por hashcat para obtener varias passwords en plano

 

Testeamos las mismas y con una de ellas conseguimos escalar al usuario tom

 

Obteniendo la flag de user

Una vez que tenemos acceso con el usuario tom simplemente cogemos la flag de su home

 

Escalado de privilegios

En la misma home del usuario tom vemos un binario ELF

Y un fichero README

 

Bueno en el fichero informa de que ha creado un binario para poder levantar DoodleDrive on premise para que cada cliente almacene sus propios documentos e indica que cada usuario a recibido su password por correo, pero en nuestro caso no tenemos ninguna password, así que descargamos el binario para su análisis.

 

Analizamos el binario con ghidra y encontramos en la función main el usuario y password necesarios para ejecutar el binario

Análisis del fichero binario

 

Revisamos también las funciones existentes y encontramos que la función 5 es vulnerable a sqli ya que no valida los datos, además es vulnerable a un bof debido a que provoca un desbordamiento de la pila al superar los 39 caracteres y provocando que pase a una nueva ejecución en la continuación del mismo.

Descubriendo el fallo

 

Si revisamos más a fondo esta parte vemos que también es posible cargar una librería local del sistema desde la misma home del usuario tom así que vamos a hacer algunas pruebas a ver por donde abordarlo.

Lanzamos una primera ejecución

 

Y después de hacer varias pruebas obtenemos una ejecución arbitraria gracias a la librería de linux.

Así que para ello creamos y compilamos nuestra librería con el siguiente código que nos permita dar permisos de suid al binario de bash

Y compilamos

Volvemos a ejecutar el binario y en la opción 5 introduciremos el siguiente texto para cargar nuestra librería

Donde los chars utilizados corresponderían a

Ejecutamos y vemos que ha cargado la librería y ha devuelto un error debido a que no entiende la query

Pero si revisamos el binario de bash ha funcionado

Así que una vez asignados los permisos escalamos

 

Obteniendo la flag de root

Y cogemos la 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 *