HackMyVM - Locker
17 octubre 2021
Esta máquina se encuentra en la plataforma HackMyVM y ha sido creada por el usuario sml.
Una máquina sencilla con una vulnerabilidad RCE en la web PHP explotable para conseguir acceso y una escalada de privilegios directa entre www-data y root.
# | Dificultad |
---|---|
Acceso | Muy Fácil |
Escalada de privilegios | Fácil |
Enumeración
La máquina objetivo y la máquina atacante se encuentran en la misma red, esto permite hallar la dirección IP de la máquina objetivo mediante un escaneo ARP con la herramienta arp-scan.
La herramienta ha detectado 3 IP:
- 10.10.10.1 - Sagemcom Broadband → Gateway
- 10.10.10.101 - PCS Systemtechnik → Máquina objetivo
- 10.10.10.102 - GIGA-BYTE TECHNOLOGY → Sistema anfitrión
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.
Únicamente se ha detectado el servicio HTTP en el puerto 80.
Consultando la web mediante el navegador se encuentra la siguiente vista.
Al acceder al enlace aparece una imagen de un candado. Fijándose en la URL se observa un parámetro número que al modificarse cambia la imagen mostrada únicamente se encuentran tres imágenes.
Que se puedan modificar las imágenes cambiando un parámetro de la URL da a pensar que sería posible un ataque LFI o RCE desde este campo de la URL. Tras probar varios payloads se encuentra uno que permite la ejecución remota de comandos: ; comando ;
Ganar acceso
Se ejecuta una reverse shell con netcat contra la máquina objetivo y se consigue acceso a la máquina como www-data.
Tras un tratamiento de la TTY se obtiene una SHELL interactiva. Para saber como se realiza este tratamiento, la web thehackersnow.com tiene una guía muy detallada de como hacerlo.
Se consultan los permisos suid de www-data y se encuentra uno que nunca se había visto antes: /usr/sbin/sulogin
Consultando el manual del binario se encuentra que ejecuta una shell como root a partir de la variable de entorno SUSHELL.
Escalada de privilegios
La escalada de privilegios consistirá en ejecutar una shell como root a partir del binario sulogin. En primer lugar se pruebó asignando un archivo con una /bin/bash a la variable de entorno SUSHELL pero no se tuvo éxito. Por esto, se prueba programando una shell muy simple en C para crear un binario y asignarlo a la variable de entorno.
Se compila el binario y se ejecuta para comprobar que funciona correctamente.
Ahora será necesario descargarlo en el máquina objetivo. Para eso se utiliza un servicio HTTP a partir de python y descargar el binario en la máquina objetivo mediante wget.
Finalmente, se modifica la variable de entorno, se dan permisos de dan permisos de ejecución al binario y se ejecuta el binario con la opción -e.
Con esto, ya se obtiene el root a la máquina y pueden consultarse la flags de user y root.