21 (FTP)
FTP - Puertos y funcionamiento
El protocolo File Transfer Protocol ( FTP) es uno de los más antiguos de Internet. El FTP se ejecuta en la capa de aplicación de la pila de protocolos TCP/IP. Por lo tanto, se encuentra en la misma capa que HTTPo POP.
Puertos
Puerto 21 (Control):
Envía comandos:
USER
,PASS
,LIST
,RETR
,STOR
…Responde con códigos:
200
= OK,550
= Error, …
Puerto 20 (Datos):
Transfiere los bytes del fichero.
Detección de errores y reanudación automática si se corta la conexión.
Funcionamiento paso a paso
Conexión de control (Puerto 21)
Cliente → Servidor: autenticación (
USER
/PASS
) y envío de comandos.
Apertura del canal de datos (Puerto 20)
Tras aceptar un comando de transferencia, el servidor abre el canal de datos.
Transferencia de archivos
Flujo de datos por el puerto 20.
Comprobación de bloques y códigos de estado.
Si hay caída de conexión, al reconectar retoma donde quedó.
Cierre de la conexión
Se cierran ambos canales (21 y 20) al finalizar.
TFTP
[!quote] Trivial File Transfer Protocol (TFTP) es más simple que FTP y realiza transferencias de archivos entre procesos cliente y servidor. Sin embargo, does notproporciona autenticación de usuarios y otras funciones valiosas compatibles con FTP. Además, mientras que FTP usa TCP, TFTP usa UDP, lo que lo convierte en un protocolo poco fiable y obliga a utilizar la recuperación de la capa de aplicación asistida por UDP.

# Instalar vsFTPd
sudo apt install vsftpd
# Archivo de configuración vsFTPd
cat /etc/vsftpd.conf | grep -v "#"

# Usuarios FTP
cat /etc/ftpusers
Configuraciones peligrosas

# Inicio con ftp anonymous
ftp 10.129.14.136
user: anonymous
# Enumeración de entorno
status -> Descripción general del sistema
debug -> Información útil para nuestros fines
trace -> Información útil para nuestros fines

# Descargar todos los archivos disponibles
wget -m --no-passive ftp://anonymous:anonymous@10.129.14.136
# Subida de archivos
touch testupload.txt
put testupload.txt (dentro del ftp)
# Scripts de nmap
sudo nmap --script-updatedb (ruta sripts: /usr/share/nmap/scripts/)
find / -type f -name ftp* 2>/dev/null | grep scripts
Interacción de servicio
# Netcat
nc -nv 10.129.14.136 21
# Telnet
telnet 10.129.14.136 21
# Openssl
openssl s_client -connect 10.129.14.136:21 -starttls ftp
Conexión básica
# Nos conectamos por FTP
ftp <ip_address>
# Nos conectamos como anonymous
frp <ip_address>
user: anonymous
password:
Fuerza bruta con Hydra
# Iniciamos ataque de fuerza bruta
hydra -l <user> -P <wordlists>.txt ftp://<ip_address> -t 15
Los parametros `-l y -p` se escriben en minuscula cuando sabes el dato , si vas a usar un diccionario como el caso de `-P` lo pones en mayuscula para indicar que es un archivo
Última actualización