Metasploitable2 es una máquina virtual Linux deliberadamente vulnerable desarrollada por Rapid7 (los creadores del framework Metasploit) con propósitos exclusivamente educativos. A diferencia de un sistema real comprometido, Metasploitable2 ha sido configurada intencionalmente con vulnerabilidades conocidas para que los estudiantes de ciberseguridad puedan practicar técnicas de hacking ético en un entorno completamente seguro y legal.
Su principal valor educativo radica en que expone una gran variedad de servicios vulnerables —FTP, Telnet, SSH, HTTP, Samba, MySQL, PostgreSQL, VNC, Tomcat y muchos más— cada uno con fallos de seguridad reales que fueron comunes en sistemas de producción durante años. Estudiar cómo se explotan estas vulnerabilidades es la mejor forma de entender cómo protegerse de ellas.
Este writeup cubre la explotación de 5 servicios clave: FTP (puerto 21), Telnet (puerto 23), VNC (puerto 5900), PostgreSQL (puerto 5432) y Apache Tomcat (puerto 8180), utilizando principalmente el framework Metasploit desde Kali Linux.
Para seguir este writeup necesitarás dos máquinas virtuales ejecutándose en la misma red interna (host-only o red NAT privada). Es fundamental que nunca expongas Metasploitable2 a internet ni a tu red real de producción.
| Componente | Descripción | Rol |
|---|---|---|
| Kali Linux | Distribución de hacking ético con Metasploit, Nmap y demás herramientas preinstaladas | 🦸 Máquina atacante |
| Metasploitable2 | VM Ubuntu 8.04 vulnerable. Credenciales por defecto: msfadmin:msfadmin | 🎯 Máquina víctima |
| VirtualBox / VMware | Software de virtualización para ejecutar ambas VMs | 🏘 Hipervisor |
| Red interna | Modo Host-Only o red NAT privada. Nunca puente con la red real. | 🌐 Red aislada |
msfadmin:msfadmin y ejecuta ifconfig para ver su IP. En los ejemplos de este writeup la IP de la víctima es 192.168.137.128 y la del atacante (Kali) es 192.168.137.129. Sustituye estas IPs por las de tu laboratorio.El reconocimiento es siempre el primer paso de cualquier auditoría de seguridad. Antes de explotar ningún servicio, necesitamos identificar la IP de la máquina objetivo y descubrir qué puertos y servicios tiene abiertos.
Accede a la consola de Metasploitable2 con las credenciales por defecto (msfadmin:msfadmin) y ejecuta ifconfig para ver su dirección IP.
Nmap (Network Mapper) es la herramienta estándar para descubrir hosts y servicios en una red. Con los flags -sV (detección de versiones) y -Pn (no hacer ping previo, útil si el host bloquea ICMP) obtenemos un mapa completo de los servicios expuestos.
| Puerto | Servicio | Versión | Vulnerabilidad principal |
|---|---|---|---|
21/tcp | FTP | vsftpd 2.3.4 | Backdoor en la versión 2.3.4 (CVE-2011-2523) |
22/tcp | SSH | OpenSSH 4.7p1 | Credenciales débiles / algoritmos antiguos |
23/tcp | Telnet | — | Protocolo sin cifrado, credenciales por defecto |
80/tcp | HTTP | Apache 2.2.8 | Múltiples CVEs, DVWA, phpMyAdmin |
445/tcp | Samba | Samba 3.0.20 | CVE-2007-2447 (username map script) |
3306/tcp | MySQL | MySQL 5.0.51a | Acceso sin autenticación, credenciales por defecto |
5432/tcp | PostgreSQL | PostgreSQL 8.3 | Credenciales por defecto, ejecución de comandos |
5900/tcp | VNC | VNC protocol 3.3 | Contraseña en blanco / por defecto |
8180/tcp | Apache Tomcat | Tomcat 5.5 | Manager con credenciales por defecto (tomcat:tomcat) |
msfconsole (la interfaz de línea de comandos de Metasploit). Conceptos clave: exploit = módulo que aprovecha la vulnerabilidad; payload = código que se ejecuta tras explotar; RHOSTS = IP de la víctima; LHOST = IP del atacante.FTP (File Transfer Protocol) es un protocolo de red estándar para la transferencia de archivos entre cliente y servidor. En Metasploitable2 se ejecuta vsftpd 2.3.4, una versión que fue comprometida en julio de 2011: un atacante introdujo una puerta trasera (backdoor) en el código fuente del paquete oficial. Cuando un cliente intenta autenticarse con un nombre de usuario que contiene el carácter :), vsftpd abre una shell con privilegios de root en el puerto 6200.
Este es un caso histórico de ataque a la cadena de suministro de software (supply chain attack): el código malicioso fue insertado directamente en el repositorio del proyecto.
La forma más simple de acceder es usando el cliente FTP con las credenciales por defecto. FTP transmite usuario y contraseña en texto plano, por lo que es trivialmente interceptable.
Este método aprovecha la backdoor introducida en vsftpd 2.3.4 para obtener una shell root directamente, sin necesidad de conocer credenciales válidas.
Telnet es un protocolo de red que permite acceso remoto a sistemas a través de una interfaz de texto. Fue diseñado en 1969 y es uno de los protocolos más antiguos de internet. Su problema fundamental es que todo el tráfico viaja en texto plano: usuario, contraseña y todos los comandos ejecutados son fácilmente interceptables mediante un sniffer de red como Wireshark.
En Metasploitable2, Telnet acepta las credenciales por defecto msfadmin:msfadmin, dando acceso directo al sistema. En muchos casos incluso proporciona acceso como root directamente, ya que las políticas de seguridad están deliberadamente deshabilitadas.
La conexión Telnet es trivial: basta con el cliente telnet disponible en cualquier sistema Linux/Mac. El peligro real no es la explotación en sí sino que cualquier persona en la red puede capturar las credenciales con un simple sniff.
sudo systemctl disable telnet.socket --nowVNC (Virtual Network Computing) es un sistema de compartición de escritorio remoto que permite ver e interactuar con el entorno gráfico de un equipo remoto a través de la red. El puerto 5900 es el puerto por defecto del primer display VNC (:0).
En Metasploitable2, el servidor VNC está configurado con contraseña vacía o trivialmente débil, lo que permite acceso inmediato al escritorio del sistema sin ninguna autenticación válida. Utilizaremos Metasploit primero para confirmar la vulnerabilidad y luego vncviewer para acceder gráficamente.
Una vez confirmado el acceso, usamos vncviewer para obtener una sesión gráfica completa del escritorio de Metasploitable2.
PostgreSQL es un potente sistema de gestión de bases de datos relacionales de código abierto. En Metasploitable2 se ejecuta con credenciales por defecto (postgres:postgres) y sin restricciones de acceso por red, lo que permite conectarse desde cualquier host.
La vulnerabilidad más crítica aquí no es solo el acceso a la base de datos, sino que PostgreSQL permite la ejecución de comandos del sistema operativo mediante la extensión COPY TO/FROM PROGRAM o funciones SQL especiales. Metasploit automatiza este proceso para obtener una shell con los privilegios del proceso PostgreSQL, que en Metasploitable2 corre como root.
COPY TO/FROM PROGRAM de PostgreSQL, que permite ejecutar comandos del sistema operativo directamente desde SQL. Esto es una característica legítima de PostgreSQL para importar/exportar datos, pero con credenciales comprometidas se convierte en una vía de ejecución remota de comandos (RCE). La defensa: nunca exponer PostgreSQL a la red sin restricción de acceso y usar credenciales robustas.Apache Tomcat es un servidor de aplicaciones de código abierto que ejecuta servlets Java y JavaServer Pages (JSP). Incluye una interfaz web de administración llamada Tomcat Manager que permite desplegar, iniciar y detener aplicaciones web en formato WAR.
En Metasploitable2, Tomcat 5.5 está expuesto en el puerto 8180 con las credenciales por defecto tomcat:tomcat. El exploit sube un archivo WAR malicioso a través del Manager, que Tomcat despliega automáticamente y ejecuta, proporcionándonos una reverse shell con los privilegios del proceso Tomcat (root en este caso).
Antes de usar Metasploit, es útil verificar manualmente que el Manager de Tomcat es accesible con las credenciales por defecto.
El exploit tomcat_mgr_upload automatiza el proceso de generar un payload como archivo WAR, subirlo al Manager y ejecutarlo para obtener una shell remota.
| Puerto | Protocolo | Servicio | Versión | Credenciales | Vector de ataque |
|---|---|---|---|---|---|
21 | TCP | FTP | vsftpd 2.3.4 | msfadmin:msfadmin | Backdoor CVE-2011-2523, credenciales |
22 | TCP | SSH | OpenSSH 4.7p1 | msfadmin:msfadmin | Credenciales débiles, algoritmos legacy |
23 | TCP | Telnet | — | msfadmin:msfadmin | Texto plano, credenciales por defecto |
25 | TCP | SMTP | Postfix smtpd | — | Relay abierto, enumeración |
80 | TCP | HTTP | Apache 2.2.8 | admin:admin | DVWA, phpMyAdmin, WebDAV |
139/445 | TCP | SMB/Samba | Samba 3.0.20 | — | CVE-2007-2447, null sessions |
512 | TCP | rexec | — | — | Acceso remoto sin autenticación |
513 | TCP | rlogin | — | — | Acceso remoto sin autenticación |
514 | TCP | rsh | — | — | Remote shell sin autenticación |
1099 | TCP | Java RMI | RMI registry | — | Ejecución remota Java |
1524 | TCP | Bindshell | — | — | Shell root directa sin auth |
2049 | TCP | NFS | — | — | Montaje sin autenticación |
3306 | TCP | MySQL | 5.0.51a | root: (vacía) | Sin contraseña de root |
5432 | TCP | PostgreSQL | 8.3.0 | postgres:postgres | Credenciales defecto, RCE via SQL |
5900 | TCP | VNC | Protocol 3.3 | (vacía) | Sin autenticación |
6000 | TCP | X11 | — | — | Display remoto sin auth |
6667 | TCP | IRC | UnrealIRCd | — | Backdoor en UnrealIRCd |
8009 | TCP | AJP | Apache Jserv | — | AJP Ghostcat (CVE-2020-1938) |
8180 | TCP | HTTP/Tomcat | Tomcat 5.5 | tomcat:tomcat | Manager upload, WAR malicioso |
El objetivo final de comprender cómo se explotan estas vulnerabilidades es precisamente saber cómo evitarlas en sistemas reales. Cada servicio explotado en Metasploitable2 representa un error de configuración o un software desactualizado que todavía existe en entornos de producción reales.
| Servicio | Vulnerabilidad | Medida defensiva |
|---|---|---|
| FTP (21) | vsftpd 2.3.4 backdoor, credenciales débiles, texto plano | Usar SFTP o FTPS en su lugar. Actualizar vsftpd. Deshabilitar FTP anónimo. Firewall restrictivo. |
| Telnet (23) | Protocolo sin cifrado, credenciales por defecto | Deshabilitar Telnet completamente. Usar SSH con clave pública. Nunca transmitir credenciales en texto plano. |
| VNC (5900) | Sin contraseña, sin cifrado nativo | Contraseña robusta en VNC. Acceso solo por VPN/SSH tunnel. Restringir acceso por IP con firewall. |
| PostgreSQL (5432) | Credenciales por defecto, acceso sin restricción | Cambiar contraseña por defecto. Configurar pg_hba.conf para restringir IPs. No exponer a la red pública. |
| Tomcat (8180) | Manager con credenciales por defecto | Cambiar credenciales del Manager. Deshabilitar el Manager en producción. Actualizar Tomcat. Firewall. |
A lo largo de este writeup has explorado 5 vectores de ataque diferentes sobre Metasploitable2, obteniendo acceso root en todos los casos mediante técnicas y herramientas que son estándar en el mundo del ethical hacking: Nmap para reconocimiento, Metasploit Framework para la explotación, y clientes nativos como FTP, Telnet y VNCviewer.
Las lecciones más importantes de este ejercicio son:
- Las credenciales por defecto son la vulnerabilidad más común y más fácil de explotar. Cambiarlas siempre es la medida de seguridad más básica.
- El software desactualizado acumula vulnerabilidades conocidas con exploits públicos. Mantener los sistemas actualizados es crítico.
- La exposición de servicios innecesarios aumenta drásticamente la superficie de ataque. Solo exponer los servicios que sean estrictamente necesarios.
- El cifrado importa: protocolos como Telnet y FTP deben sustituirse por sus equivalentes seguros (SSH, SFTP).
- Samba (445): CVE-2007-2447 — inyección de comandos via username map script
- IRC — UnrealIRCd (6667): backdoor en la versión incluida en Metasploitable2
- HTTP (80): DVWA (Damn Vulnerable Web App), phpMyAdmin, Mutillidae — laboratorio de vulnerabilidades web
- Java RMI (1099): ejecución remota de objetos Java
- NFS (2049): montaje de sistema de archivos sin autenticación
- Bindshell (1524): shell root directamente accesible sin autenticación
- MySQL (3306): acceso root sin contraseña
- HackTheBox —
hackthebox.com: máquinas vulnerables de nivel progresivo con comunidad activa - TryHackMe —
tryhackme.com: plataforma guiada ideal para principiantes - VulnHub —
vulnhub.com: máquinas virtuales vulnerables descargables como Metasploitable - OffSec — OSCP: la certificación de referencia en penetration testing
- Metasploit Unleashed — documentación gratuita y completa de Metasploit Framework