El Protocolo de Transferencia de Archivos (FTP) es uno de los protocolos más antiguos de Internet. El FTP se ejecuta dentro de la capa de aplicación de la pila de protocolos TCP/IP. Por lo tanto, se encuentra en la misma capa que HTTP o POP. Estos protocolos también funcionan con el apoyo de navegadores o clientes de correo electrónico para realizar sus servicios. También existen programas FTP especiales para el Protocolo de Transferencia de Archivos.
listen=NO | ¿Ejecutar desde inetd o como un demonio independiente? |
listen_ipv6=YES | ¿Escuchar en IPv6? |
anonymous_enable=NO | ¿Habilitar acceso anónimo? |
local_enable=YES | ¿Permitir que los usuarios locales inicien sesión? |
dirmessage_enable=YES | ¿Mostrar mensajes del directorio activo cuando los usuarios acceden a determinados directorios? |
use_localtime=YES | ¿Usar la hora local? |
xferlog_enable=YES | ¿Activar el registro de cargas/descargas? |
connect_from_port_20=YES | ¿Conectar desde el puerto 20? |
secure_chroot_dir=/var/run/vsftpd/empty | Nombre de un directorio vacío |
pam_service_name=vsftpd | Esta cadena es el nombre del servicio PAM que utilizará vsftpd. |
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem | Las últimas tres opciones especifican la ubicación del certificado RSA que se utilizará para conexiones cifradas SSL. |
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key | |
ssl_enable=NO |
Entornos peligrosos
Hay muchas configuraciones diferentes relacionadas con la seguridad que podemos realizar en cada servidor FTP. Estos pueden tener varios propósitos, como probar conexiones a través de firewalls, probar rutas y mecanismos de autenticación. Uno de estos mecanismos de autenticación es el anonymoususuario. Esto se utiliza a menudo para permitir que todos en la red interna compartan archivos y datos sin acceder a las computadoras de los demás. Con vsFTPd, las configuraciones opcionales que se pueden agregar al archivo de configuración para el inicio de sesión anónimo tienen este aspecto:
| Configuración | Descripción |
|---|---|
anonymous_enable=YES | ¿Permitir el inicio de sesión anónimo? |
anon_upload_enable=YES | ¿Permitir que anónimo cargue archivos? |
anon_mkdir_write_enable=YES | ¿Permitir que anónimo cree nuevos directorios? |
no_anon_password=YES | ¿No pedir contraseña a un anónimo? |
anon_root=/home/username/ftp | Directorio para anónimos. |
write_enable=YES | ¿Permitir el uso de comandos FTP: STOR, DELE, RNFR, RNTO, MKD, RMD, APPE y SITE? |
Inicio de sesión anónimo
ftp 10.129.14.136
Connected to 10.129.14.136.
220 "Welcome to the HTB Academy vsFTP service."
Name (10.129.14.136:cry0l1t3): anonymous
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls| Configuración | Descripción |
|---|---|
dirmessage_enable=YES | ¿Mostrar un mensaje cuando ingresan por primera vez a un nuevo directorio? |
chown_uploads=YES | ¿Cambiar la propiedad de los archivos cargados de forma anónima? |
chown_username=username | Usuario al que se le otorga la propiedad de los archivos cargados de forma anónima. |
local_enable=YES | ¿Permitir que los usuarios locales inicien sesión? |
chroot_local_user=YES | ¿Colocar a los usuarios locales en su directorio de inicio? |
chroot_list_enable=YES | ¿Utilizar una lista de usuarios locales que se colocarán en su directorio de inicio? |
| Configuración | Descripción |
|---|---|
hide_ids=YES | Toda la información de usuarios y grupos en los listados del directorio se mostrará como "ftp". |
ls_recurse_enable=YES | Permite el uso de listados recurrentes. |
En el siguiente ejemplo, podemos ver que si la hide_ids=YESconfiguración está presente, la representación UID y GUID del servicio se sobrescribirá, lo que nos hará más difícil identificar con qué derechos se escriben y cargan estos archivos.
Descargar un archivo
ftp> get Important\ Notes.txtDescargar todos los archivos disponibles
wget -m --no-passive ftp://anonymous:anonymous@10.129.14.136Cargar un archivo
ftp> put testupload.txtScripts FTP de Nmap
find / -type f -name ftp* 2>/dev/null | grep scripts
/usr/share/nmap/scripts/ftp-syst.nse
/usr/share/nmap/scripts/ftp-vsftpd-backdoor.nse
/usr/share/nmap/scripts/ftp-vuln-cve2010-4221.nse
/usr/share/nmap/scripts/ftp-proftpd-backdoor.nse
/usr/share/nmap/scripts/ftp-bounce.nse
/usr/share/nmap/scripts/ftp-libopie.nse
/usr/share/nmap/scripts/ftp-anon.nse
/usr/share/nmap/scripts/ftp-brute.nseSe ve ligeramente diferente si el servidor FTP se ejecuta con cifrado TLS/SSL. Porque entonces necesitamos un cliente que pueda manejar TLS/SSL. Para ello podemos utilizar el cliente openssly comunicarnos con el servidor FTP. Lo bueno de usarlo openssles que podemos ver el certificado SSL, lo que también puede ser de ayuda.
openssl s_client -connect 10.129.14.136:21 -starttls ftp
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Dev, CN = master.inlanefreight.htb, emailAddress = admin@inlanefreight.htb
verify error:num=18:self signed certificate
verify return:1
depth=0 C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Dev, CN = master.inlanefreight.htb, emailAddress = admin@inlanefreight.htb
verify return:1
---
Certificate chain
0 s:C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Dev, CN = master.inlanefreight.htb, emailAddress = admin@inlanefreight.htb
i:C = US, ST = California, L = Sacramento, O = Inlanefreight, OU = Dev, CN = master.inlanefreight.htb, emailAddress = admin@inlanefreight.htb
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIENTCCAx2gAwIBAgIUD+SlFZAWzX5yLs2q3ZcfdsRQqMYwDQYJKoZIhvcNAQEL
...SNIP...