Dificultad: Very Easy · SO: Linux · Tema: FTP anónimo → OSINT interno → SSH tunnel a PostgreSQL en Docker
El orden es la clave de esta profesión. Mi ciclo:
1. Nmap básico -> Identificar puertas abiertas
2. Nmap scripts -> Extraer información de cada servicio
3. UDP scan -> Descartar vectores ocultos
4. Nmap completo -> Confirmar que no hay nada escondido
5. Conexión manual -> Verificar hallazgos in-situ
nmap -sV <IP>
Dos vectores: vsFTPd como primer candidato y SSH abierto, como cualquier servidor Linux.

Antes de ir por la flag, investigo el puerto 22 a fondo — no se trata de hacer solo los deberes que dan la flag, sino de investigación que dé dividendos:
nmap -p 22 --script ssh2-enum-algos,ssh-hostkey <IP>
| Dato | ¿Qué significa? | ¿Por qué importa? |
|---|---|---|
4ubuntu0.5 |
Parche aplicado | Sin exploits CVE directos |
3072 bit RSA |
Key fuerte | No atacamos la criptografía |
ED25519 |
Algoritmo moderno | El admin configura SSH bien |
Verificación de puertos ocultos (TCP completo + UDP top 100):
nmap -p- -sV -sC <IP>
nmap -sU --top-ports 100 <IP>

Nada nuevo, pero hay que ser curiosos: el reconocimiento pasivo evita desperdiciar vectores y ser detectado.
Login anónimo directo y listado del directorio compartido:
ftp <IP> # anonymous / anonymous
ls # -> mail_backup

Me traigo los archivos sin problemas, como un sysadmin pecho plateado:

Dentro hay una política de contraseñas que completa parte del recorrido, y una comunicación corporativa con información sensible: la lista de usuarios. La pregunta clave: quién no cambió su password por defecto.
Atención especial para quienes administran contraseñas en texto plano: usen un gestor de contraseñas. Y cambien las credenciales apenas entren — mejor aún, MFA: algo que poseo, algo que sé, algo intransferible.

Con el usuario identificado y su contraseña débil, entramos:
┌──────────────┐ ┌─────────────┐ ┌──────────────┐ ┌────────────┐
│ FTP abierto │ → │ mail_backup │ → │ Credenciales │ → │ Acceso SSH │
│ (anon) │ │ (archivos) │ │ (.uinfo) │ │ │
└──────────────┘ └─────────────┘ └──────────────┘ └────────────┘
Enumeración Exfiltración Análisis Explotación
Radiografía completa del usuario antes de escalar:
id; whoami; groups # alcance del usuario
pwd; hostname; uname -a # contexto del sistema
cat /etc/passwd # inventario de usuarios
find / -perm -4000 -type f 2>/dev/null # binarios SUID
getcap -r / 2>/dev/null # capabilities
searchsploit gstreamer cap_net_admin # exploits candidatos
Los exploits encontrados requerían condiciones muy específicas — camino descartado. Pero la exploración dejó un hallazgo forense interesante: el historial de bash es un symlink directo a /dev/null. Eso no es práctica de usuario estándar: alguien está borrando sus huellas mientras trabaja con ese usuario.

¿Qué escucha solo en localhost?
ss -tulpn | grep 127.0.0.1
Puerto 5432: PostgreSQL corriendo dentro de un contenedor Docker — por eso el servicio no aparece listado como unidad del sistema, y con este usuario no llego al contenedor.
Creo el túnel desde mi máquina host:
ssh -L 5432:127.0.0.1:5432 christine@<IP>
psql -h 127.0.0.1 -U christine -p 5432

Observen la progresión de accesos: de FTP pasamos a SSH, y de SSH creamos un túnel para alcanzar el motor de base de datos.
Listo los usuarios de la base — el rol secrets llama la atención. Cambio de sesión con ese usuario y listo las tablas del esquema público:

Hay una tabla guardada por Christine que es nuestra bandera:

ss -tulpn es obligatorio en post-explotación.-L) convierte un puerto interno en superficie de ataque alcanzable.history -> /dev/null) cuentan historias sobre el operador del sistema.