WriteUp de la máquina Vacaciones

Por Wuilmer Bolívar · IT Operations Specialist

22 May 2024

Progreso del WriteUp

Reconocimiento inicial

El primer paso consiste en iniciar la máquina. Esto se puede lograr ejecutando el siguiente comando, una vez que se haya descargado la máquina:

sudo bash auto_deploy.sh vacaciones.tar

Una vez iniciada la máquina, el script de despliegue me proporciona la dirección IP de la máquina, por lo que procedo a realizar un escaneo de puertos para identificar los servicios disponibles:

nmap 172.17.0.2

El resultado del escaneo de puertos fue:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-22 11:46 EDT
Nmap scan report for 172.17.0.2
Host is up (0.000010s latency).
Not shown: 998 closed tcp ports (reset)
PORT   STATE SERVICE
22/tcp open  ssh
80/tcp open  http
MAC Address: 02:42:AC:11:00:02 (Unknown)

Resultado clave: El escaneo de puertos reveló dos servicios importantes:

  • Puerto 22: Servicio SSH abierto.
  • Puerto 80: Servicio HTTP abierto.

Análisis de servicio

El siguiente paso es explorar el servicio HTTP. Al visitar la página en el puerto 80, encontré una página en blanco, pero al inspeccionar el código fuente encontré el siguiente mensaje:

CodigoFuenteVacaciones.png

Este mensaje revela la existencia de dos posibles usuarios, juan y camilo, y sugiere buscar algún directorio relacionado con correos electrónicos, específicamente en la ruta /var/mail/.

Fuerza bruta

Ya que el código fuente me proporciona dos posibles usuarios, procedí a realizar un ataque de fuerza bruta utilizando hydra. Para ello, creé un archivo llamado users.txt que contenía los usuarios juan y camilo.

hydra -L users.txt -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh

Luego de un tiempo, logré encontrar la contraseña del usuario camilo. Con esta información, me conecté al sistema utilizando SSH:

ssh camilo@172.17.0.2

Acceso por SSH

Con acceso al sistema como el usuario camilo, intenté elevar privilegios utilizando el comando sudo -l. Sin embargo, este usuario no tenía permisos para ejecutar sudo. También intenté listar otros usuarios del sistema con compgen -u, pero el comando no estaba disponible. Explorando el directorio /home, encontré los siguientes directorios: camilo, juan y pedro.

Recordé que el código fuente mencionaba que juan le había dejado un correo a camilo, así que revisé el directorio /var/mail y encontré un archivo de texto llamado correo.txt dentro del directorio camilo. Este archivo contenía la clave SSH para el usuario juan.

ClaveCamiloVacaciones.png

Escalada de privilegios

Ahora conectado como el usuario juan, ejecuté el comando sudo -l para verificar posibles privilegios elevados. Encontré que el usuario juan podía ejecutar el comando /usr/bin/ruby sin necesidad de contraseña. Consulté GTFOBins y encontré una forma de aprovechar este permiso para obtener acceso como root ejecutando el siguiente comando:

sudo ruby -e 'exec "/bin/sh"'

Con este comando, logré obtener acceso completo como root.

pwnedVacaciones.png

Aprendizaje

La máquina Vacaciones permitió practicar técnicas de reconocimiento y explotación, incluyendo la fuerza bruta de credenciales SSH y la escalada de privilegios utilizando permisos específicos con el comando ruby. Este ejercicio subraya la importancia de configurar adecuadamente los permisos y los servicios para evitar brechas de seguridad.

Comandos

  1. Despliegue de la máquina:
    sudo bash auto_deploy.sh vacaciones.tar
    
  2. Escaneo de puertos:
    nmap 172.17.0.2
    
  3. Acceso al servicio SSH:
    ssh camilo@172.17.0.2
    
  4. Exploración del directorio de correo:
    cd /var/mail/camilo
    
  5. Escalada de privilegios con ruby:
    sudo ruby -e 'exec "/bin/sh"'