Spectra - Hack The Box
Resolución de la máquina Spectra de Hack The Box, una máquina ChromeOS de dificultad fácil según la plataforma en la cual nos aprovechamos de un error en el entorno de pruebas para descubrir que hay un Directory Listing en el cual se expone un fichero de backup del wp-config.php de Wordpress para obtener el acceso inicial, para posteriormente encontrar la contraseña del usuario katie y acceder por ssh a la máquina, y finalmente aprovecharnos de poder ejecutar con privilegios de sudo sin proporcionar contraseña el comando initctl para modificar un servicio y obtener el acceso de root.
Escaneo con nmap
Empezamos escaneando todos los puertos
Vemos los puertos 22 (SSH), 80 (HTTP) y 3306 (MYSQL) abiertos.
Escaneo específico sobre los puertos encontrados usando scripts básicos de enumeración y detección de versiones.
Intrusión inicial
Accedo a la web y veo que los links te redirigen a spectra.htb.
Añado 10.10.10.229 spectra.htb
al fichero hosts para que me resuelva el nombre y accedo.
En el primer link hay un wordpress
En el segundo hay una página en la que aparece un error
Viendo que en la URL pone la palabra testing, se intuye que puede ser un entorno de pruebas. Le quito el index.php para acceder al directorio testing y veo que tiene capacidad de Directory Listing, y se ven diréctamente los archivos.
Me llama la atención el fichero wp-config.save. Hago click en el fichero y nose ve nada, pero al acceder al código fuente de la página se puede ver el contenido del fichero, y unas credenciales.
Se ve claramente que la página wordpress tiene en la URL spectra.htb/main y la otra spectra.htb/testing, con lo cual entiendo que el segundo es un entorno de pruebas del primero. Así que intento acceder con el usuario admin y la contraseña devteam01 a la página principal pero me dice usuario erróneo.
Viendo que el creador del único post que hay en la página es el usuario Administrator pruebo con ese usuario y la misma contraseña y accedo.
Pruebo modificando la plantilla 404.php añadiendo <?php system($_REQUEST['cmd']); ?>
para ejecutar comandos a partir de la variable cmd pero veo que no me deja guardar los cambios.
Llegados a este punto lo intento con msfconsole, y obtengo una sesión de meterpreter.
Escalada al usuario katie
Empiezo a enumerar el sistema y veo en /opt un archivo llamado autologin.conf.orig, en el que pone que lee una contraseña de /etc/autologin. Dentro del directorio hay un fichero passwd que contiene una contraseña.
Utilizo la contraseña para conectarme por ssh con el usuario katie y funciona.
Escalada a root
El usuario katie pertenece al grupo developers, se ve en la salida del comando id.
Ejecuto sudo -l y veo que puedo ejecutar (ALL) SETENV: NOPASSWD: /sbin/initctl
Initctl tiene la característica de poder iniciar y detener servicios del directorio /etc/init
Listando el directorio /etc/init veo que hay un fichero llamado test.conf que puede ser modificado por los usuarios que pertenecen al grupo developers.
Modifico el fichero para que ejecute un chmod +s /bin/bash para otorgarle privilegio SUID al binario de bash, para que al ejecutar bash -p me asigne permisos de root.
Solo me queda ejecutar /sbin/initctl start test
y seguidamente bash -p para recibir los permisos de root y poder leer el root.txt.