FTP

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

Descargar todos los archivos disponibles

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

Cargar un archivo

ftp> put testupload.txt 

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

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

Last updated