Primer paso: Descargar la máquina
El primer paso sería descargar la máquina en Dockerlabs.es
DockerLabsLuego de haberla descargado, hacemos un unzip del archivo comprimido, y nos quedaría lo siguiente:
Despliegue de la máquina
Para desplegar la máquina:
sudo bash ./auto_deploy.sh vacaciones.tar
Escaneo con Nmap
Realizamos un escaneo con Nmap y vemos que los puertos 80 y 22 están abiertos.
nmap -sS -sV -sC --min-rate 5000 -p- --open -n -Pn 172.17.0.2
Whatweb
Hacemos un whatweb para ver si la versión de Apache es vulnerable, en este caso no.
Fuzzing de la página
Realizamos un Fuzzing de la página, pero no encontramos nada interesante. Se podría realizar fuzzing en dominios y extensiones como html, php, etc., pero en este caso no lo utilizamos.
wfuzz -c --hc 404 -t 200 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://172.17.0.2/FUZZ
Exploración de la página
Si entramos a la página, vemos que no hay nada en el HTML. Al presionar Ctrl+U, observamos un texto: "De: Juan Para: Camilo".
Esto nos da una pista de dos posibles usuarios (juan, camilo) a los que podríamos intentar crackear la contraseña por SSH con Hydra.
hydra 172.17.0.2 ssh -l camilo -P /usr/share/wordlists/rockyou.txt -vV
Acceso con SSH
La contraseña de Camilo es "password1". Luego de conectarnos con SSH:
ssh camilo@172.17.0.2
Si obtenemos errores, eliminamos los known_hosts
:
sudo rm ~/.ssh/known_hosts
Revisión de archivos
Una vez dentro, no encontramos archivos ocultos en el directorio actual. Sin embargo, recordando el código fuente de la página, había un mensaje: “-- De : Juan Para: Camilo, te he dejado un correo es importante... ”. Esto nos da una pista para encontrar más información.
Exploración de directorios
Nos dirigimos a /var/mail/camilo
y encontramos nuestra primera flag, que nos proporciona una posible contraseña.
Revisión de usuarios
Si hacemos:
cat /etc/passwd
Vemos que hay un usuario "juan" y otro "pedro". Juan ya había sido mencionado en el correo, pero Pedro no.
Cambio de usuario a Juan
Nos cambiamos al usuario Juan utilizando la contraseña que encontramos en el correo:
su juan
Escalada de privilegios
Nos dirigimos al directorio /home
y vemos que están los tres usuarios que se habían mencionado antes.
Para ver si hay algún comando que podamos correr sin ser root, como el usuario Juan, ejecutamos el siguiente comando:
sudo -l
Descubrimos que podemos ejecutar el comando /usr/bin/ruby
con permisos de superusuario. Buscamos en GTFOBins si podemos explotarlo:
En este caso, utilizaremos el siguiente exploit usando sudo
, ya que tenemos privilegios para ejecutar Ruby:
sudo ruby -e 'exec "/bin/sh"'
Root
Al ejecutar el comando anterior, nos convertimos en root:
¡Ya con esto tendríamos la máquina resuelta! Para finalizar, volvemos a donde se desplegó la máquina y la detenemos con Ctrl+C
.