Skip to main content
HackTheBox machines - Magic

HackTheBox machines – Magic WriteUp

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

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

 

Entre los puertos conocidos en el escaneo, y como no disponemos de credenciales para el puerto 22, pasamos directamente al puerto 80 donde encontramos el siguiente portal web.

HackTheBox machines - Magic

 

Enumeración

Al acceder al portal web, lo primero que nos llama la atención es un listado de imágenes con nombres en valores hexadecimales, hacemos un simple script de 3 líneas en javascript para extraer todos los valores hexadecimales:

Aunque está claro, que por aquí no vamos por buen camino.

Realizamos varios escaneos en busca de directorios y ficheros pero tampoco encontramos ningún punto importante sobre el cual apoyarnos así que continuamos con el enlace que hay en la parte inferior izquierda del portal, donde indica “Please Login, to upload images.” que nos lleva a la siguiente página:

HackTheBox machines - Magic

 

El título de esta página es “Magic Login” así que nos da que pensar que tengamos que realizar algún tipo de inyección SQL.

Después de algunas vueltas y muchos intentos conseguimos bypassear el login con el siguiente payload:

Y, al completar el formulario, pasamos  a la página mencionada de subida de imágenes:

HackTheBox machines - Magic

 

Probamos la posibilidad de subir un fichero php y nos salta un error indicando que los tipos de archivo permitidos son JPG, JPEG y PNG, así que necesitaremos ocultar nuestra shell en una imagen para poder bypassear esta parte.

En nuestro caso nos descargamos una de las imágenes existentes en la home del portal y le añadimos un código en php en un comentario de la misma con la herramienta exiftool:

Y posteriormente copiamos nuestra imagen añadiendole la subextensión php:

A continuación subimos nuestra imagen con doble extensión al portal, la ruta de subida la sabemos por el resto de imágenes existentes en la home del portal, situadas en la uri /images/uploads/, así que buscamos la misma y probamos a ejecutar un comando sencillo para verificar que funciona, por ejemplo ls, y lo conseguimos:

HackTheBox machines - Magic

Así que ahora nos queda subir nuestra shell para obtener acceso a la máquina. Creamos una reverse shell en python, como la que podemos obtener desde la entrada Cheatsheet – Reverse shell y la subimos al portal a través del parámetro cmd de nuestra imagen, eso sí, habiendolo codificado para hacerlo más efectivo, quedando de la siguiente forma:

Cabe destacar que de primeras hice la prueba con python (python2 por defecto) y esta no funcionó, así que probé con python3 y en este caso sí conseguí la shell accediendo a la máquina con el usuario www-data:

De primeras intentamos conseguir el listado de usuarios del fichero /etc/passwd cuyo contenido es el siguiente:

Y observamos que el usuario theseus puede ser un potencial para conseguir escalar al usuario y obtener la flag de user, pero todavía no tenemos información suficiente así que seguimos investigando.

Revisamos el contenido del portal y encontramos un fichero interesante en la home del mismo llamado db.php5:

Cuyo contenido es el siguiente:

Y parece que tenemos las credenciales de conexión a mysql:

Pero para descartar la posibilidad, intentamos acceder con ese usuario, y nos rechaza, la contraseña es incorrecta:

Bueno, parece que tenemos que seguir buscando, las credenciales eran de mysql así que intentamos conectarnos pero tampoco existe dicho servicio, buscaremos los binarios a ver con cual podemos conseguir algo de información y conectar a la base de datos:

Encontramos que existe el binario de mysqldump, así que, aunque no podamos conectar directamente al mysql, podemos hacer un volcado de los datos para inspeccionarlos posteriormente:

Vale, lo tenemos, y el contenido del dump es el siguiente:

En este caso hemos obtenido otras credenciales, si nos fijamos en la siguiente consulta:

Y esta si que podría pertenecer al usuario theseus mencionado.

 

Obteniendo la flag de user

Probamos a acceder con el usuario theseus y la password obtenida del dump de mysql y ahora sí, entramos y tenemos la flag de user:

 

Escalado de privilegios

Buscaremos en la máquina posibles ficheros binarios que dispongan de permisos suid, lo que nos podría ayudar a conseguir llevar a cabo el escalado a root:

Entre la lista de ficheros obtenidos, nos llama la atención uno en particular:

sysinfo es un comando en linux que obtiene información del sistema con privilegios elevados y que realiza los siguientes comandos entre otras cosas:

Además, descubrimos que existe una vulnerabilidad en el mismo a través de la cual es posible escalar privilegios falseando el ejecutable lshw o fdisk con el objetivo de que al lanzar el comando sysinfo ejecute nuestro fake y con ello una shell que nos permita escalar a root.

Dicho esto, vamos a falsear, en nuestro caso, el ejecutable de lshw. Para ello haremos las siguientes acciones:

Nos iremos a la ruta /tmp y crearemos un directorio llamado 0:

Crearemos ahora nuestro fichero de shell llamado lshw:

Y subiremos el mismo a la máquina en la ruta mencionada quedando /tmp/0/lshw

Le daremos permisos al fichero:

y añadiremos la ruta creada a la variable PATH

 

Obteniendo la flag de root

Ahora que ya tenemos falsificado el fichero lshw, sólo nos queda ejecutar de nuevo el comando sysinfo:

Y cuando termine el mismo, tendremos nuestra shell como root en la máquina:

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 https://www.hackthebox.eu/home/users/profile/103792

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *