Aprende › Redes, WiFi y pivoting

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.

FTP tiene dos canales (control y datos) y lo envía todo en claro; el acceso anónimo no requiere credenciales
FTP tiene dos canales (control y datos) y lo envía todo en claro; el acceso anónimo no requiere credenciales

Los problemas de seguridad son:

ProblemaConsecuencia
Todo en claroUsuario y contraseña se capturan con un sniffer de red
Acceso anónimoCualquiera entra como anonymous con un correo falso de contraseña
Historial de versiones vulnerablesvsftpd 2.3.4 con puerta trasera, ProFTPD con exploits conocidos
Permisos mal pensadosCarpetas escribibles por anónimos convertidas en almacén de malware
Mala integración con firewallsPuertos 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:

ModoQuién abre el canal de datosProblema típico
ActivoEl servidor conecta al cliente (comando PORT)El firewall del cliente bloquea la conexión entrante
PasivoEl 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:

ComandoQué hace
ls o dirListar archivos en la carpeta actual
cd carpetaCambiar de carpeta en el servidor
lcd carpetaCambiar de carpeta en tu equipo
pwdMostrar la carpeta actual del servidor
get archivoDescargar un archivo
mget *Descargar varios archivos (con patrón)
put archivoSubir un archivo
binaryCambiar a modo binario (obligatorio para archivos no de texto)
passiveAlternar entre modo activo y pasivo
bye o quitCerrar 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 frecuentePor qué es valioso
Archivos de configuración de aplicacionesCredenciales de base de datos, claves de API
Copias de seguridad (.tar.gz, .sql)El sistema entero antes de ser endurecido
Documentos internosNombres de usuario, estructura organizativa, flujos de trabajo
Código fuenteLógica de aplicaciones y credenciales incrustadas
Carpetas de carga abiertasPosibilidad 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 antiguasPueden 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ódigoSignificado
220Servicio listo tras conectar
230Sesión iniciada (login correcto)
331Usuario aceptado, pide contraseña
530Autenticación fallida
150Preparando el canal de datos
226Transferencia de datos completada
550Archivo 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í:

  1. Entrar como anónimo y listar. Descargar todo: wget -r ftp://anonymous:anonymous@IP/.
  2. Revisar los archivos: aparece un backup.tar.gz con wp-config.php dentro.
  3. Usar la credencial de MySQL que has encontrado para avanzar en la aplicación web del mismo servidor.
  4. Buscar credenciales SSH en el mismo backup: una id_rsa sin frase de paso del usuario maria.
  5. 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#

Comparativa entre FTP, FTPS y SFTP: cifrado, puertos y comodidad con firewalls
Comparativa entre FTP, FTPS y SFTP: cifrado, puertos y comodidad con firewalls

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, rsync sobre 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 con cd ...
  • 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 chroot sin 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 (scripts ftp-anon, ftp-vsftpd-backdoor), ftp o curl, y se descarga todo con wget -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.

Fuentes y lecturas recomendadas#

Practícalo en estos laboratorios

Ver todos los laboratorios de esta categoría