
Exploit interactivo en Python sin dependencias para el backdoor de vsftpd 2.3.4 (CVE-2011-2523).
Un pequeño exploit en Python 3 sin dependencias para la puerta trasera de vsftpd 2.3.4 (CVE-2011-2523). Activa la puerta trasera a través de FTP y te lleva a un shell interactivo de root en el listener generado.
Escrito como un reemplazo moderno para scripts de exploit antiguos que dependían de telnetlib — eliminado de la biblioteca estándar en Python 3.13. Esta versión usa solo la biblioteca estándar y lee el shell con select en lugar de un sleep fijo, por lo que la salida no se trunca.
⚠️ Solo para uso autorizado. Esto apunta a un servicio con vulnerabilidad conocida y está destinado a la educación en seguridad y entornos de laboratorio como Metasploitable 2. Ejecútalo solo contra sistemas que poseas o para los que tengas permiso explícito por escrito para probar.
vsftpd 2.3.4 se distribuyó con una puerta trasera maliciosa: cualquier nombre de usuario FTP que contenga la secuencia :) hace que el demonio enlace un shell root en TCP/6200. El script:
vsftpd 2.3.4.USER <nombre>:) / para activar la puerta trasera.PASS <cualquier cosa>id; uname -a.python3 vsftpd_backdoor.py <target-ip> [-p FTP_PORT] [-s SHELL_PORT] [--skip-verify]
Ejemplos:
# Predeterminado: FTP en 21, shell de puerta trasera en 6200, verificar banner primero
python3 vsftpd_backdoor.py 192.168.243.114
# Puerto FTP no estándar, omitir verificación de banner
python3 vsftpd_backdoor.py 192.168.243.114 -p 2121 --skip-verify
Escribe comandos en el prompt vsftpd#; escribe exit (o Ctrl-C) para salir.
La puerta trasera es de un solo uso por activación: la primera conexión al puerto 6200 recibe el shell, y ese shell mantiene el puerto mientras permanezca abierto. Nada más acepta una segunda conexión.
Consecuencias prácticas:
nc y Metasploit contra el mismo objetivo simultáneamente — competirán por el único slot del shell y obtendrás fallos confusos ("not a fresh shell", conexión rechazada, etc.).exit para que el proceso remoto muera y libere el puerto 6200. Matar el cliente de manera incorrecta puede dejar huérfano el proceso y mantener el puerto abierto.Si 6200 ya está enlazado (puerto abierto pero sin shell utilizable), reinicia el objetivo:
# En la consola del objetivo
sudo netstat -tlnp | grep 6200
sudo kill -9 <pid>
O simplemente reinicia la VM para una puerta trasera limpia garantizada, sin activar.
Distribuido bajo la Licencia MIT. Consulta LICENSE para más información.