Anonymous FTP
Arsenal completo de comandos en la cheatsheetEl FTP anónimo es una configuración del servicio FTP que permite iniciar sesión con el usuario anonymous (o ftp) y cualquier contraseña (tradicionalmente, un correo). Nace de una época en la que se usaba para distribuir ficheros públicos; hoy, en un objetivo, es un punto de enumeración de primer orden.
Cómo confirmarlo (atacante). El propio nmap con sus scripts por defecto lo canta:
21/tcp open ftp Microsoft ftpd
| ftp-anon: Anonymous FTP login allowed (FTP code 230)El código 230 es el "User logged in" del protocolo FTP: confirma que el login anónimo funciona. A partir de ahí, ftp <ip> con usuario anonymous y contraseña vacía da acceso.
Qué buscar. Listar el contenido (dir/ls) y descargar lo que haya. Conviene recordar el comando binary antes de bajar ficheros no textuales (imágenes, ejecutables): en modo ASCII se corrompen.
ftp <ip> # user: anonymous, pass: vacia; luego ls / get / put / binary
netexec ftp <ip> -u anonymous -p '' # confirmar el acceso anonimo
curl -s -u 'anonymous:' ftp://<ip>/ --list-only
wget -r --no-passive ftp://anonymous:x@<ip>/ # descarga recursiva de todo
curl -T shell.aspx -u 'anonymous:' ftp://<ip>/ # subir una webshell si hay escrituraEl riesgo real está en la escritura y en el contexto. Un FTP anónimo de solo lectura con ficheros inocuos es poco más que ruido. El peligro aparece cuando:
- Permite subir ficheros (
put): un atacante deposita contenido en el servidor. - Su directorio coincide con la raíz de otro servicio. Es el caso de Devel: el FTP anónimo escribía sobre el mismo directorio que servía el IIS. Subir por FTP una webshell
.aspxy pedirla por HTTP daba ejecución de comandos. El truco fue validar la hipótesis con untest.txtinocuo antes de subir nada peligroso.
Cómo detectarlo. En el log del servidor FTP, la firma es un login anonymous/ftp (código 230) desde una IP externa, y sobre todo un comando STOR/PUT de un anónimo subiendo un ejecutable (.aspx, .php, .jsp) a un directorio que además sirve otro servicio. La confirmación es la creación de ese fichero en la raíz web (FIM) seguida de una petición HTTP que lo ejecuta y del proceso web lanzando una shell. Una subida anónima a un directorio compartido con el webroot es el patrón crítico.
Defensa. Deshabilitar el acceso anónimo salvo necesidad expresa; si se mantiene, dejarlo en solo lectura, con un directorio aislado (nunca compartido con la raíz web ni con rutas ejecutables) y sin información sensible. Cifrar el canal (FTPS/SFTP) y registrar los accesos.