Skip to main content
HackTheBox machines – Retired WriteUp

HackTheBox machines – Retired WriteUp

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

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

No hay muchos puertos abiertos, así que vamos a tirar contra el portal web existente en el puerot 80.

 

Enumeración

Accedemos al portal web en el puerto 80 y vemos la siguiente aplicación

Primeros pasos con retired

 

Navegamos por el portal y encontramos varias cosas interesantes, por un lado observamos la forma que tiene la aplicación de acceder a las diferentes páginas html

 

Y por otro observamos un texto donde indica que el servicio EMUEMU se encuentra abierto en fase beta:

Analizando el portal web de retired

 

Vistos estos dos puntos vamos a buscar en primer lugar si la página es vulnerable a lfi, y observamos que efectivamente hemos podido obtener el fichero passwd de la máquina

 

Por otra parte, y conociendo que el servicio emuemu se encuentra en fase beta probamos a acceder al fichero beta.html y nos muestra la siguiente pantalla:

Programa beta en la máquina retired

 

Leyendo el texto indica que para poder acceder al programa beta es necesario una licencia que debe de ser activada por la aplicación activate_license, y revisando el código del formulario llama al fichero activate_license.php, así que aprovechando la vulnerabilidad de lfi vista anteriormente vamos a obtener el fichero.

 

Revisando el código vemos que hay un servicio, al cual no tenemos acceso, en el puerto 1337, así que aprovecharemos la vuln de nuevo para descubrir cuál es el proceso

Vemos que tiene asignado el pid 440, así que vamos a obtener el cmdline del proceso

Vemos que se trata de un ejecutable llamado activate_license, así que vamos a descargarlo para ver realmente de qué se trata

Se trata de un fichero ELF, lo que quiere decir que vamos a necesitar explotar el mismo para poder avanzar, revisaremos entonces las protecciones del mismo

 

Para ello vamos a necesitar crear un exploit, para el cual necesitaremos

  • Definir una ruta en la que se almacenará cualquier fichero que se desee descargar
  • Automatizar el proceso de obtención del pid del proceso de activate_license
  • Obtener las direcciones de memoria que utiliza el proceso (lo podemos obtener del fichero maps del proceso)
  • Generar un payload, lo haremos con msfvenom
  • Obtener el offset, para ello lanzaremos el fichero php en local y obtendremos el offset con la ayuda de gdb

Conocidos los puntos necesarios vamos a explicar cada una de las partes del exploit.

En nuestro caso utilizamos python, y creamos una función para almacenar el fichero que se necesite descargar 

 

Automatizamos la obtención del pid del proceso

 

Obtenemos las direcciones de memoria

 

Y generamos el payload

En este caso, y para poder hacer la ip dinámica, editamos el payload, quedando de la siguiente forma

 

El último paso será obtener el offset y posteriormente juntarlo todo.

Nos descargaremos el fichero activate_license.php y levantaremos un servidor con php en el directorio donde esté el mismo

A continuación levantamos gdb con el ejecutable y el puerto 1337

Generamos un payload y lanzamos la aplicación

 

A continuación, y con la ayuda de python, enviaremos una petición con el payload que hemos generado

Y observaremos como se ha obtenido respuesta en el servidor php que levantamos

Así que ahora volveremos a gdb para obtener el offset

Obteniendo el offset del binario activate_license

 

Ahora con todas las partes necesarias, las juntamos y el exploit quedaría como se ve a continuación:

 

Una vez que lo tenemos completo, sólo queda ejecutarlo para conseguir acceso con el usuario www-data

 

Escalado al usuario dev

A continuación necesitaremos escalar a un usuario con distintos privilegios y para ello procedemos con la enumeración de la máquina, aunque en este caso, si nos fijamos en la home del usuario www-data observamos varios ficheros zip interesantes

Los ficheros tienen una fecha establecida y da la sensación de que se generan cada minuto, así que vamos a comprobar si hay alguna tarea en el sistema que realice esa acción

 

Y vemos una tarea llamada website_backup, que tiene pinta de ser la encargada de generar esos zips.

Buscaremos el fichero donde se define la configuración del servicio

El cual dispone del siguiente contenido

 

El servicio ejecuta un fichero llamado webbackup así que vamos a revisar el contenido del mismo

 

El script realiza cada minuto un backup del contenido de la ruta /var/www/html, en la cual tenemos permisos, así que vamos a tratar de obtener la clave ssh del usuario dev mediante la creación de un enlace en el directorio.

Esperamos unos segundos hasta la siguiente ejecución y vemos dentro del zip como se encuentra la clave pem del usuario dev

 

Así que extraemos la misma

 

Obteniendo la flag de user

Con la clave en nuestra posesión, accedemos por ssh con el usuario dev y leemos la flag

 

Escalado de privilegios

Para el escalado a root, revisamos en primer lugar la home del usuario y encontramos un fichero escrito en c llamado reg_helper.c con el siguiente contenido

 

Revisamos en la máquina y encontramos otro fichero igual pero en una ruta diferente

Lo que nos da que pensar que es la forma de escalar, así que revisamos el fichero y encontramos una ruta muy interesante /proc/sys/fs/binfmt_misc/register y si buscamos en google encontramos un exploit para el escalado de privilegios en github.

Nos descargamos el mismo y realizaremos algunos cambios.

Eliminaremos la siguiente función

Y la línea

Y por último modificaremos la línea

Por esta otra

Si nos fijamos eliminamos, dos partes que no son importantes y editamos la línea del final redirigiendo la salida el ejecutable vulnerable.

Una vez hechos los cambios ya sólo nos queda ejecutar el exploit.

 

Obteniendo la flag de root

Ejecutamos y conseguimos escalar a root y la flag del mismo

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.