Responsive image

HackMyVM - Hommie

14 septiembre 2021

Esta máquina se encuentra en la plataforma HackMyVM y ha sido creada por el usuario sml.

Una máquina sencilla sin técnicas complejas de explotación pero que requiere de una buena enumeración. Esto hace que sea una máquina muy entretenida de resolver.

# Dificultad
Acceso Fácil
Escalada de privilegios Fácil

Enumeración


Como todas las máquinas de esta plataforma es necesario conocer la dirección IP de la máquina. Para ello utilizaré la herramienta ping-sweep con el modo de descubrimiento de sistema operativo para poder avanzar más rápido en la enumearción. El motivo de utilizar esta herramienta y no otra basada en el protocoo ARP se debe a que despliego las máquinas en una red privada que utilizo como laboratorio y distinta a la red local, por lo que un descubrimiento mediante ARP no detectará las máquinas.

error loading image :(

La herramienta ha detectado 5 IP:

Se encuentran dos posibles máquinas que pueden ser la máquina objetivo, para identificarla se realizará un escaneo de puerto rápido para determinar cual es la máquina objetivo.

error loading image :(

Estos escaneos identifican que la máquina objetivo es la de la dirección IP: 10.10.10.103.

A continuación, se comienza con el escaneo de puertos. Como es habitual para el escaneo se utiliza nmap y se divide en dos fases: la primera de un escaneo rápido de los 65535 puertos para detectar aquellos abiertos y la segunda para realizar una enumeración más exahustiva usando scripts básicos de los puertos abiertos.

error loading image :(

Una vez obtenidos los puertos abiertos se realiza el segundo escaneo más específico. Para obtener los puertos de forma rápida se utiliza la herramienta get-ports. Esta herramienta obtiene los puertos de un archivo nmap y los copia en la clipboard, está basada en la herramienta extractPorts del usuario S4vitar.

error loading image :(

El escaneo durará 5 minutos, tiempo suficiente para hacerse un café.

error loading image :(

Con el café en mano se consultan los resultados del escaneo, el cual ha desvelado 3 puertos abiertos: HTTP, FTP y SSH. Además, el escaneo desvela que el servicio FTP permite la conexión anónima.

Primero se realiza una enumeración del servicio HTTP mediante la herramienta whatweb y obteniendo la página principal con curl.

error loading image :(

En la página principal del servicio HTTP se dan dos pistas. La primera la existencia de un usuario alexia, la segunda que su clave privada está expuesta. Será necesario encontrar la clave privada.

Ya que el servicio FTP permite la conexión FTP, se inicia la búsqueda en ese servicio.

error loading image :(

Se descubre la carpeta oculta ".web" pero sin ningún contenido interesante. La clave privada se encontrará en otro lado.


Ganar acceso


La carpeta oculta da a pensar que puede haber algún servicio oculto, por lo que se realiza un escaneo de los primeros 100 puertos UDP.

error loading image :(

Se descubren dos servicios UDP, el servicio DHCP y un servicio TFTP (Trivial File Transfer Protocol). Se realiza la conexión al servicio TFTP y se solicita la clave privada.

error loading image :(

¡Éxito! La clave privada está expuesta en este servicio. Se inicia una conexión SSH como usuario alexia y usando la clave privada.

error loading image :(

Escalada de privilegios


Se consultan los privilegios del usuario alexia y se descubre permiso SUID para ejecutar un binario showMeTheKey.

error loading image :(

El nombre del archivo no deja mucho lugar a la imaginación, aún así se ejecuta para saber qué realiza.

error loading image :(

El binario muestra la clave privada del usuario alexia. Se realiza un análisis estático básico del binario, consultando las cadenas de caracteres mediante la herramienta strings.

error loading image :(

Entre las cadenas se encuentra un posible vector de ataque, el binario muestra la clave privada basándose en la variable de entorno $HOME.

Se modifica la variable de entorno para contener /root en lugar de /home/alexia.

error loading image :(

Se ejecuta el binario y ahora se muestra la clave privada de root, esta clave se copia y se pega en otro archivo para realizar la posterior conexión como root.

error loading image :(

El usuario root se obtiene realizando una nueva conexión SSH utilizando la clave privada recién adquirida.

error loading image :(

En el directorio base del usuario root existe un archivo de texto que indica que no se sabe dónde se encuentra la flag. Pero una simple búsqueda encuentra la flag.

error loading image :(

Finalmente, se obtienen las dos flags y se concluye la resolución de la máquina.

error loading image :(