FTP (21)

El Protocolo de Transferencia de Archivos (FTP, por sus siglas en inglés) es un protocolo de red utilizado para la transferencia de archivos entre sistemas que están conectados a una red TCP/IP, basado en una arquitectura cliente-servidor. Este protocolo permite la transmisión eficiente de archivos a través de la red, proporcionando servicios de autenticación y control de acceso.

Por defecto, el puerto asignado para la comunicación FTP es el puerto 21.

Nmap

Cuando lanzamos una enumeración usando Nmap, se utilizan por defecto una serie de scripts que comprueban si se permite el acceso de forma anonima.

  • anonymous:anonymous
  • anonymous
  • ftp:ftp
sudo nmap -sCV -p21 <RHOST> -vvv

Scripts de nmap utiles para este servicio:

  • ftp-anon
  • ftp-bounce
  • ftp-syst
  • ftp-brute
  • tftp-version
sudo nmap -p21 --script=ftp-anon <RHOST> -vvv

Conexión al servidor FTP

# -A: Esta opción es específica del cliente FTP y suele utilizarse para activar 
# el modo ASCII  de transferencia de archivos. En este modo, los archivos se 
# transfieren en formato de texto, lo que significa que se pueden realizar 
# conversiones de formato (por ejemplo, de CRLF a LF en sistemas Unix).
ftp -A <RHOST>

nc -nvc <RHOST> 21

telnet <RHOST> 21

Interactuar con el cliente FTP

ftp> anonymous # usuario
ftp> anonymous # contraseña
ftp> help # mostrar la ayuda
ftp> help CMD # mostrar la ayuda de un comando especifico
ftp> status # descripción general de la configuración del servidor
ftp> binary # establecer la transmisión en binario en lugar de ascii
ftp> ascii # establecer la transmisión a ascii en lugar de binario
ftp> ls -a # lista todos los archivos incluyendo los ocultos
ftp> cd DIR # cambia el directorio remoto
ftp> lcd DIR # cambia el directorio local
ftp> pwd # mostrar el directorio actual de trabajo
ftp> cdup  # mover al directorio anterior de trabajo
ftp> mkdir DIR # crea un directorio
ftp> get FILE [NEWNAME] # descarga un archivo con el nombre indicado NEWNAME
ftp> mget FILE1 FILE2 ... # descarga multiples archivos
ftp> put FILE [NEWNAME] # sube un fichero local a el servidor ftp con el nuevo nombre indicado NEWNANE
ftp> mput FILE1 FILE2 ... # sube multiples archivos
ftp> rename OLD NEW # renombra un archivo remoto
ftp> delete FILE # borra un fichero
ftp> mdelete FILE1 FILE2 ... # borra multiples archivos
ftp> mdelete *.txt # borra multiples archivos que cumplan con el patrón
ftp> exit # abandona la conexión ftp

Netexec

# Conectar a un servidor FTP con un usuario y contraseña especificados
nxc ftp <target> -u <user> -p <password>

# Conectar a un servidor FTP con usuario anónimo (sin contraseña)
nxc ftp <target> -u 'anonymous' -p ''

# Conectar a un servidor FTP especificando un puerto diferente al predeterminado
nxc ftp <target> -u <user> -p <password> --port <PORT>

# Listar el contenido del directorio raíz del servidor FTP
nxc ftp <target> -u <user> -p <password> --ls

# Listar el contenido de un directorio específico en el servidor FTP
nxc ftp <target> -u <user> -p <password> --ls <DIRECTORY>

# Descargar un archivo específico desde el servidor FTP
nxc ftp <target> -u <user> -p <password> --get <FILE>

# Subir un archivo específico al servidor FTP
nxc ftp <target> -u <user> -p <password> --put <FILE>

Fuerza bruta de credenciales

hydra -l <USER> -P /usr/share/wordlists/rockyou.txt ftp://<RHOST>

Archivos de configuración

  • /etc/ftpusers
  • /etc/vsftpd.conf
  • /etc/ftp.conf
  • /etc/proftpd.conf

Descargar archivos

wget -m ftp://anonymous:anonymous@<RHOST>