Security Lab

Обход каталога в нескольких FTP клиентах

Дата публикации:15.12.2002
Всего просмотров:1891
Опасность:
Наличие исправления:
Количество уязвимостей:1
CVE ID: Нет данных
Вектор эксплуатации:
Воздействие:
CWE ID: Нет данных
Наличие эксплоита: Нет данных
Уязвимые продукты:
Описание: Многие FTP клиенты, включая те, которые встроены в Web клиенты, могут быть уязвимы к некоторым методам обхода каталога, которые могут эксплуатироваться злонамеренными FTP серверами. Нападение позволяет серверу перезаписывать или создавать произвольные файлы вне рабочего каталога клиента.

Для успешной эксплуатации уязвимости, FTP сервер должен послать имя файла с последовательностью типа "../" или ‘\..\’ в ответ на LIST или другой запрос. Клиент также должен загрузить такие файлы в некоторую директорию.

Для проверки клиентов на уязвимость был создан специальный набор тестов. Для этого, FTP сервер ftp4all был изменен таким образом, чтобы возвратить имена файлов различных форм, которые могли бы заставить FTP клиент записать файлы поверх рабочего каталога.

Были изменены файлы src/ftps/list.c, serverd.c, и transfer.c, так, чтобы они могли производить изменяемые имена файлов, для любого имени файла, запрашиваемого клиентом.

Когда клиент посылает LIST или NLST команду, тестовый сервер возвращает имена фалов, содержащие следующие последовательности:

  1. "../" – классический обход
  2. "/path" – абсолютное имя файла
  3. "..\" –обход с использованием backslash (Windows системы)
  4. "C:" – обход, используя имя диска (Windows системы)
  5. "..." - "triple-dot" (Windows системы, равноценно ../..)
При загрузке групп файлов, используя эти последовательности, FTP клиент выполняет команду "NLST", читает список файлов, возвращенных сервером, и использует полученные имена файлов, чтобы выполнить индивидуальные запросы.

Примечание: Web клиенты могут быть также уязвимы при обработке "ftp://" URL. Ниже, моделируемый сеанс, который демонстрирует поведение уязвимого клиента.

 
CLIENT> CONNECT server
  220 FTP4ALL FTP server ready. Local time is Tue Oct 01, 2002 20:59.
  Name (server:username): test
  331 Password required for test.
  Password:
  230-Welcome, test - I have not seen you since Tue Oct 01, 2002 20:15 !
  230 At the moment, there are 0 guest and 1 registered users logged in.

CLIENT> pwd
  257 "/" is current directory.

CLIENT> ls -l
  200 PORT command successful.
  150 Opening ASCII mode data connection for /bin/ls.
  total 1
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 ...\FAKEME5.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 
./../FAKEME2.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 ../FAKEME1.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 
.\..\FAKEME4.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 ..\FAKEME3.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 
/tmp/ftptest/FAKEME6.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 
C:\temp\FAKEME7.txt
  -rw-r-----   0 nobody    nogroup         54 Oct 01 20:10 FAKEFILE.txt
  -rw-r-----   0 nobody    nogroup          0 Oct 01 20:11 misc.txt
  226 Directory listing completed.


CLIENT> GET *.txt

  Opening ASCII data connection for FAKEFILE.txt...
  Saving as "FAKEFILE.txt"

  Opening ASCII data connection for ../../FAKEME2.txt...
  Saving as "../../FAKEME2.txt"

  Opening ASCII data connection for /tmp/ftptest/FAKEME6.txt...
  Saving as "/tmp/ftptest/FAKEME6.txt"
Если клиент уязвим, то он запишет файлы вне корневой директории.

В некоторых случаях, FTP клиент производил ошибку, когда сталкивался с подозрительным именем файла. Таким образом, нельзя было убедиться, был ли клиент уязвим к другим именам файла. В этом случае, во время тестирования сервер посылал одно злонамеренное имя файла одновременно, а клиент запускался несколько раз. Другие возможные варианты последовательностей обхода каталога не проверялись.

Web клиенты могут быть уязвимы к подобному типу нападений от злонамеренных HTTP серверов, при автоматической загрузки Web страницы. Однако, это не было проверено.

В результане проверки нескольких популярных FTP клиентах, уязвимость была обнаружена в wget, FTP клиентах встроенных в OpenBSD 3.0, Solaris 2.6-7.0 и CGI IRIX. Ftp клиенты в NT SP5, Red Hat, Debian, XP а также в lftp, NcFTP и Lynx не уязвимы к описанному типу нападений.

Ссылки: Directory Traversal Vulnerabilities in FTP Clients