FTPS est FTP encapsulé dans TLS. Il existe sous deux formes : le FTPS implicite, qui négocie TLS immédiatement à la connexion sur le port 990, et le FTPS explicite, qui démarre en clair sur le port 21 et bascule avec la commande AUTH TLS. Bien réalisé, il corrige le plus gros défaut de FTP, les identifiants et les données en clair, mais la protection dépend entièrement de la configuration du TLS et de sa vérification par le client. La surface offensive est donc double : un TLS faible ou non vérifié qui permet encore l'interception, et les faiblesses au niveau FTP (accès anonyme, brute force, rebond) que le chiffrement ne traite pas.
# detect FTPS and inspect its TLS
nmap -p21,990 --script ftp-syst,ssl-enum-ciphers <target>
openssl s_client -connect <target>:990 # implicit FTPS
# explicit: connect plain to 21, then AUTH TLS, then STARTTLS handshake
curl -v --ssl-reqd ftp://<target>/ --user user:pass
Sous-thèmes#
- TLS faible et validation de certificat : interception par une mauvaise configuration TLS.