Skip to content

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/emptyNombre de un directorio vacío
pam_service_name=vsftpdEsta cadena es el nombre del servicio PAM que utilizará vsftpd.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pemLas ú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ónDescripció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/ftpDirectorio 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

c
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ónDescripció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=usernameUsuario 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ónDescripción
hide_ids=YESToda la información de usuarios y grupos en los listados del directorio se mostrará como "ftp".
ls_recurse_enable=YESPermite 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

c
ftp> get Important\ Notes.txt

Descargar todos los archivos disponibles

c
wget -m --no-passive ftp://anonymous:anonymous@10.129.14.136

Cargar un archivo

c
ftp> put testupload.txt

Scripts FTP de Nmap

c
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.nse

Se 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.

c
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...