20 апреля, 2024

Реализация Directory Traversal & Изъятие деликатной информации

Содержание:

Во всех веб-приложениях на просторах интернета довольно легко найти уязвимости, в особенности в тех, которые настраивали новички. Одни уязвимости более серьезные, другие менее, но суть в том, что даже малюсенький промах может быть серьезным оружием в руках опытного хакера. Directory Traversal относительно простая атака, но ее можно использовать для получения доступа к деликатной информации на серверах.

Современные веб-приложения и веб-сервера содержат множество информации в дополнение к стандартному набору HTML и CSS, которые включают в себя скрипты, картинки, шаблоны и файлы конфигурации. Обычно сервер не позволяет пользователю получить доступ к информации, находящейся выше корневого каталога или корневого веб-документа в серверной файловой системе, используя различные способы аутентификации, такие как списки контроля доступа, к примеру.

Атаки типа Directory Traversal возникают, когда в системе находятся ошибки конфигурации, которые позволяют получить корневой (root) доступ, видеть файлы данного уровня и изменять их. Эта атака известна под несколькими именами: path traversal, directory climbing, откат или дот-дот-слэш (../) из-за используемых символов.

Выше по директориям

Уязвимости типа Directory Traversal могут быть обнаружены при проверке HTTP-запросов, форм и куки, но самый легкий способ убедиться, что приложение уязвимо, это посмотреть, нет ли в URL-адресе GET-запроса. Параметры, содержащиеся в GET-запросах, отображаются прямо в URL и выглядят примерно вот так:

http://examplesite.com/?file=index.php

Иногда может случиться так, что вы сможете отгадать, где находится важная информация, пробуя просто подняться выше по директории. Команда cd используется для смены директории. Когда она используется с двумя точками (cd..), это означает переход к родительской папке или папке, которая находится выше той, в которой вы находитесь.

Добавляя ../ прямиком в URL-адрес к пути файла, мы можем попытаться переместиться в директорию повыше в надежде увидеть системные файлы и информацию, не предназначенную для публичного доступа. Мы можем приступать прокладывать наш путь наверх, чтобы получить доступ к директории /etc/passwd, но мы сталкиваемся с некоторыми ошибками:

Читать также:  Как установить VPN на Mac

После того, как мы поднялись на несколько уровней выше, мы наконец натыкаемся на золотую жилу, и в нашем браузере отображается информация /etc/passwd:

Файл в директории /etc/passwd содержит информацию о пользователях системы, такую как никнеймы, идентификаторы, домашние каталоги и информацию о паролях (хотя обычно она ограничена x или *, так как точная информация о них хранится где-то в другом месте).
Другая информация, которая нас также интересует, находится в /etc/group файле. В нем содержится информация о том, к какой группе принадлежат те или иные пользователи.

Файл в директории /etc/profile определяет маску режима создания пользовательских файлов (umask) и базовые переменные для пользователя:

Файл в /etc/issue содержит информацию о системе или сообщение, которое выводится при входе в приложение:

Файл в /proc/version хранит информацию об используемом ядре Linux:
К
Файл в /proc/cpuinfo содержит информацию о ЦП:

И в файле /proc/self/environ содержится информация о текущих потоках и о конкретных переменных среды:

На других операционных системах directory traversal работает идентично с небольшими отличиями. К примеру, в Windows используется обратный слэш при разделении директорий, а также корневой каталог обычно носит имя диска (чаще всего C:\). Вот список файлов, которые стоит искать на Windows:

  • C:\Windows\repair\system
  • C:\Windows\repair\SAM
  • C:\Windows\win.ini
  • C:\boot.ini
  • C:\Windows\system32\config\AppEvent.Evt

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

Кодировки и обход ограничения файлов

В некоторых ситуациях, когда веб-приложение отсеивает специальные символы, используется кодировка для обхода проверки ввода, чтобы атака имела место быть. Мы уже видели, как это применимо в других атаках по типу SQL-инъекций, но те же самые техники вполне подходят и для directory traversal атаки.
Два основных используемых метода – это URL-кодировка и Unicode-кодировка. В Unix-системах, которые используют прямой слэш, URL-эквивалент символов ../ будет выглядеть как одно из этих выражений:

%2e%2e%2f
%2e%2e/
..%2f

Unicode-эквивалент следующий:

..%c0%af

В Windows-системах, которые используют обратный слэш, ..\ в URL-кодировке выглядит следующим образом:

%2e%2e%5c
%2e%2e\
..%5c

Unicode-вариант выглядит так:

..%c1%9c

Зачастую приложение отображает файлы только определенного вида, будто то страница, которая явно заканчивается на .php или PDF-документ. Мы можем обойти это, добавив нулевой байт к запросу, дабы устранить тип документа, примерно вот так:

http://examplesite.com/?file=topsecret.pdf%00

Предотвращение Directory Traversal

Хоть атака directory traversal имеет весь потенциал для того, чтобы стать губительной атакой для администратора, к счастью, от нее весьма просто защититься. Наиболее важным пунктом является наличие соответствующего списка контроля доступа, а также не будет лишним обеспечить надлежащие права доступа к файлам. Также не стоит без явной необходимости хранить важную информацию или файлы конфигурации в корневом веб-документе. Если на сервере нет важных деталей, с которых можно начать атаку, то последствия от такой атаки будут куда меньше.

Читать также:  Как включить функцию полного шифрования диска для защиты данных на Mac OS (Часть 1)

Помимо прочих важных настроек отображения в Интернете, важным шагом является обеспечение правильной проверки ввода. На самом деле, стоит полностью отказаться от пользовательского ввода при работе с файлами системы, если это возможно. В качестве дополнительной меры можно также использовать whitelist, позволяющий свести к минимуму риск того, что злоумышленник воспользуется любыми ошибками в настройках доступа.

Также (в особенности, если администратор хочет выйти за привычные рамки его обязанностей) стоит провести достоверное тестирование вашего приложения на уязвимость directory traversal. Существуют специальные инструменты для подобных проверок DirBusterZAP и DotDotPwn, хотя все эти процедуры можно легко сделать вручную.

Подводя итоги

Directory Traversal позволяют атакующему использовать ошибки в настройках безопасности, чтобы попытаться получить доступ к важной информации. Как мы видим, это очень простая в реализации атака, но последствия могут быть просто разрушительными, в особенности, если была изъята личная или финансовая информация, или если была скомпрометирована важная информация о сервере, которая стала опорной точкой для последующих атак. Как видите, в мире взломов правит информация.

Добавить комментарий