FTP anónimo y configuraciones inseguras: qué es, cómo se enumera y cómo se moderniza
· 10 min de lectura
Aprende qué es el FTP, por qué el acceso anónimo y la autenticación en claro siguen siendo un problema, cómo se enumeran los servidores FTP en un laboratorio, qué información suele filtrarse por ahí y qué protocolo usar en su lugar.
El FTP (File Transfer Protocol) tiene más de cincuenta años, y sigue apareciendo una y otra vez en los escaneos de los laboratorios y en las redes reales. En aquella época no se pensó en cifrado ni en autenticación robusta: todo viaja en claro, incluidas las contraseñas, y existe un modo de acceso anónimo que permite conectarse sin credenciales. Muchas organizaciones lo siguen usando por inercia, sin darse cuenta de que es una de las primeras cosas que mira cualquiera que escanee su red.
En los laboratorios de whoami-labs, ver el puerto 21 abierto suele ser una buena noticia: con frecuencia hay acceso anónimo, archivos olvidados, credenciales visibles o versiones vulnerables del servidor. En una red real, un FTP mal configurado es una fuente habitual de filtraciones de datos.
En esta lección vas a ver cómo funciona el FTP, qué significa el acceso anónimo, cómo enumerarlo de forma metódica, qué información suele encontrarse y cómo modernizar el servicio para que deje de ser un problema.
Conéctate solo a servidores FTP propios o en entornos autorizados, como los laboratorios de whoami-labs. Acceder a FTP ajenos sin permiso es un delito, aunque admitan acceso anónimo.
Qué es el FTP y por qué sigue siendo un problema#
FTP es un protocolo de transferencia de archivos que usa dos canales: uno de control (por defecto en el puerto 21) donde se envían los comandos, y otro de datos (puerto 20 en modo activo, o un puerto alto en modo pasivo) donde viajan los archivos. Esa separación complica las conexiones a través de firewalls y es una de las razones por las que FTP envejece mal.

Los problemas de seguridad son:
| Problema | Consecuencia |
|---|---|
| Todo en claro | Usuario y contraseña se capturan con un sniffer de red |
| Acceso anónimo | Cualquiera entra como anonymous con un correo falso de contraseña |
| Historial de versiones vulnerables | vsftpd 2.3.4 con puerta trasera, ProFTPD con exploits conocidos |
| Permisos mal pensados | Carpetas escribibles por anónimos convertidas en almacén de malware |
| Mala integración con firewalls | Puertos dinámicos que fuerzan reglas demasiado abiertas |
Qué es el acceso anónimo#
El acceso anónimo es un modo del FTP donde se usa el usuario literal anonymous (o a veces ftp) y se acepta cualquier correo como contraseña. Se pensó para compartir archivos públicos, como las descargas de software libre en los años noventa. Hoy, la mayoría de servidores anónimos encontrados por error exponen lo que no debían.
Modo activo y modo pasivo#
Las dos formas de abrir el canal de datos explican muchas de las dificultades históricas del FTP:
| Modo | Quién abre el canal de datos | Problema típico |
|---|---|---|
| Activo | El servidor conecta al cliente (comando PORT) | El firewall del cliente bloquea la conexión entrante |
| Pasivo | El cliente conecta a un puerto que le indica el servidor (PASV) | El firewall del servidor debe permitir un rango de puertos altos |
En redes modernas, casi todos los clientes usan el modo pasivo, y los servidores definen un rango de puertos dedicados para que el firewall no quede abierto por completo. Si una conexión FTP se queda colgada después del ls, el modo es el primer sospechoso.
Cómo se enumera un FTP#
Detección y versión#
# Nmap: detectar versión y ejecutar scripts estándar
nmap -p 21 -sV -sC IP_DEL_LAB
# Banner directo
nc IP_DEL_LAB 21
Scripts útiles de Nmap:
ftp-anon: comprueba si acepta acceso anónimo.ftp-syst: obtiene información del sistema operativo.ftp-vsftpd-backdoor: comprueba la famosa puerta trasera de vsftpd 2.3.4.ftp-brute: fuerza bruta contra usuarios.
Conexión anónima#
ftp IP_DEL_LAB
# Usuario: anonymous
# Contraseña: anonymous@ (o cualquier correo)
# O con un solo comando
curl -s ftp://anonymous:anonymous@IP_DEL_LAB/ --list-only
Una vez dentro, los comandos típicos son ls para listar, cd para cambiar de carpeta, get para descargar y pwd para saber dónde estás.
Buscar archivos interesantes#
Descarga todo el contenido accesible y revísalo en tu equipo. Con wget es más cómodo:
wget -r ftp://anonymous:anonymous@IP_DEL_LAB/
Y luego:
# Buscar archivos de configuración, credenciales y backups
find . -type f \( -name "*.conf" -o -name "*.bak" -o -name "*.txt" -o -name "*.old" \)
grep -irE "password|usuario|secret" .
Comandos del cliente que vas a usar#
Dentro del cliente ftp interactivo, estos son los comandos más útiles:
| Comando | Qué hace |
|---|---|
ls o dir | Listar archivos en la carpeta actual |
cd carpeta | Cambiar de carpeta en el servidor |
lcd carpeta | Cambiar de carpeta en tu equipo |
pwd | Mostrar la carpeta actual del servidor |
get archivo | Descargar un archivo |
mget * | Descargar varios archivos (con patrón) |
put archivo | Subir un archivo |
binary | Cambiar a modo binario (obligatorio para archivos no de texto) |
passive | Alternar entre modo activo y pasivo |
bye o quit | Cerrar la sesión |
Si encuentras archivos comprimidos o binarios, acuérdate de cambiar a modo binary antes de descargarlos: en modo ASCII se corrompen.
Probar si se puede escribir#
Si el laboratorio lo permite, probar la escritura abre más opciones (por ejemplo, subir una webshell si ese directorio es también el raíz web):
ftp> put prueba.txt
Si put funciona, el servidor acepta subidas y es un punto de ataque muy útil.
Qué se suele encontrar#
| Hallazgo frecuente | Por qué es valioso |
|---|---|
| Archivos de configuración de aplicaciones | Credenciales de base de datos, claves de API |
Copias de seguridad (.tar.gz, .sql) | El sistema entero antes de ser endurecido |
| Documentos internos | Nombres de usuario, estructura organizativa, flujos de trabajo |
| Código fuente | Lógica de aplicaciones y credenciales incrustadas |
| Carpetas de carga abiertas | Posibilidad de subir una webshell si coincide con el webroot |
Archivos de usuarios (.bash_history, id_rsa) | Acceso directo a cuentas del sistema |
| Imágenes de instalación o ISOs antiguas | Pueden contener credenciales por defecto de productos |
Códigos de respuesta#
FTP responde a cada comando con un código de tres cifras parecido al de HTTP. Saber leerlos ayuda a entender los registros y lo que detecta Nmap:
| Código | Significado |
|---|---|
| 220 | Servicio listo tras conectar |
| 230 | Sesión iniciada (login correcto) |
| 331 | Usuario aceptado, pide contraseña |
| 530 | Autenticación fallida |
| 150 | Preparando el canal de datos |
| 226 | Transferencia de datos completada |
| 550 | Archivo no encontrado o sin permisos |
Cuando Nmap muestra 230 Login successful tras un login anónimo, es la señal visible que confirma lo que ya suponías: no hace falta contraseña. En la conexión manual, ese 230 tras PASS es lo que marca el comienzo de la sesión real.
Un escenario típico en un laboratorio#
En un escaneo de un laboratorio autorizado ves:
21/tcp open ftp vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
Dos cosas buenas para el auditor: acceso anónimo y una versión concreta para buscar vulnerabilidades. Procedes así:
- Entrar como anónimo y listar. Descargar todo:
wget -r ftp://anonymous:anonymous@IP/. - Revisar los archivos: aparece un
backup.tar.gzconwp-config.phpdentro. - Usar la credencial de MySQL que has encontrado para avanzar en la aplicación web del mismo servidor.
- Buscar credenciales SSH en el mismo backup: una
id_rsasin frase de paso del usuariomaria. - Conectar por SSH con esa clave y continuar la escalada desde dentro.
Un solo FTP anónimo ha dado acceso a la base de datos y acceso al servidor por SSH. Es exactamente por eso por lo que los primeros escaneos de un laboratorio miran siempre el puerto 21: la relación entre el esfuerzo (conectar como anonymous y descargar todo) y la recompensa (credenciales, código fuente, acceso SSH) es uno de los mejores atajos que existen en una auditoría.
Cómo modernizar el servicio#

La respuesta corta es: no usar FTP. El protocolo moderno equivalente es SFTP (SSH File Transfer Protocol), que viaja cifrado por el mismo canal de SSH, y para subidas con contraseña o claves ya existen muchísimas alternativas. Si por algún motivo FTP debe seguir existiendo, hay medidas obligatorias.
Reemplazar por SFTP#
- SFTP usa el puerto 22 de SSH; sin segundos canales, sin puertos dinámicos, con cifrado y autenticación robustos.
- Los clientes gráficos (FileZilla, WinSCP) hablan SFTP sin complicaciones.
- Para despliegues,
rsyncsobre SSH es rápido, cifrado y resumible.
Si hay que mantener FTP: FTPS#
FTPS (FTP sobre TLS) cifra los dos canales. Se activa con explicit TLS en el servidor (vsftpd, ProFTPD). Es la opción si un cliente heredado no habla SFTP.
Endurecer la configuración#
- Desactivar el acceso anónimo salvo que sea una zona pública de descargas, bien aislada.
- Enjaular al usuario en su carpeta (
chroot), para que no pueda salir concd ... - Permisos estrictos en lo que suben los usuarios: sin ejecución, fuera del webroot.
- Registrar los accesos y revisarlos regularmente.
- Mantener el servidor FTP actualizado: las versiones viejas acumulan exploits.
Para compartir archivos públicos#
Si el motivo era «que la gente descargue estos archivos», hoy hay opciones mucho mejores: un servidor web con directorio público (HTTPS), un almacenamiento de objetos con enlaces firmados (S3, R2), o un servicio de compartición temporal.
Errores comunes#
- Dejar el FTP «porque siempre ha estado». Suele ser el primer puerto que mira un atacante.
- Confiar en el acceso anónimo «solo para descargas». Si la carpeta es también escribible, se convierte en almacén de malware ajeno.
- Dejar
chrootsin activar. El cliente puede salir del directorio asignado y leer todo lo que el usuario del servidor FTP vea. - Usar FTPS mal configurado. Certificados autofirmados antiguos o permitiendo el protocolo sin cifrar.
- Olvidar que FTP viaja en claro. Capturas de red muestran usuarios y contraseñas sin esfuerzo.
Preguntas frecuentes#
¿Qué diferencia hay entre FTP, FTPS y SFTP?#
FTP va sin cifrar. FTPS es FTP sobre TLS: cifra la comunicación pero mantiene los dos canales y los puertos dinámicos. SFTP es un protocolo distinto que viaja dentro de SSH, por un único puerto (22) y es mucho más amigable con firewalls.
¿Por qué sigue habiendo FTP si es tan antiguo?#
Por inercia, por compatibilidad con clientes muy antiguos y porque mucha gente lo asocia con «compartir archivos» sin plantearse alternativas. En la mayoría de casos puede retirarse.
¿Es seguro el acceso anónimo si solo hay archivos públicos?#
Depende. Lo que publiques por FTP anónimo se puede descargar sin dejar rastro útil. Si por error dejas un archivo con credenciales o un backup, es como si lo hubieras colgado en una web pública.
¿Qué tan explotable es un vsftpd 2.3.4?#
Esa versión concreta se distribuyó entre 2011 y 2012 con una puerta trasera: si se enviaba el usuario terminado en :) se abría una shell en el puerto 6200. Metasploit tiene el módulo listo. Es un ejemplo histórico que sigue apareciendo en laboratorios didácticos.
¿Dónde practico esto?#
En los laboratorios de whoami-labs enlazados al final de esta lección, varios de ellos empiezan precisamente por un servidor FTP.
Resumen#
- FTP envía todo en claro y usa dos canales, lo que lo hace inseguro y difícil con firewalls modernos.
- El acceso anónimo permite entrar sin credenciales y es un gran filtrador de archivos cuando se deja mal configurado.
- Se enumera con
nmap(scriptsftp-anon,ftp-vsftpd-backdoor),ftpocurl, y se descarga todo conwget -r. - La solución moderna es sustituir por SFTP; si FTP debe quedarse, usar FTPS, desactivar el acceso anónimo,
chroot, permisos estrictos y actualizar.