Обучение

Реализация 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, но мы сталкиваемся с некоторыми ошибками:

После того, как мы поднялись на несколько уровней выше, мы наконец натыкаемся на золотую жилу, и в нашем браузере отображается информация /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 имеет весь потенциал для того, чтобы стать губительной атакой для администратора, к счастью, от нее весьма просто защититься. Наиболее важным пунктом является наличие соответствующего списка контроля доступа, а также не будет лишним обеспечить надлежащие права доступа к файлам. Также не стоит без явной необходимости хранить важную информацию или файлы конфигурации в корневом веб-документе. Если на сервере нет важных деталей, с которых можно начать атаку, то последствия от такой атаки будут куда меньше.

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

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

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

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

HelpUAdmin

Recent Posts

Windows 10 стала работать медленнее после установки обновления? Исправим это

Ваш компьютер на Windows 10 перестал быть быстрым после обновления системы? Мы подскажем, как устранить…

3 года ago

Описание приложения-чата по приглашениям Clubhouse

Это приложение для iPhone основано на приглашениях и аудио. С его помощью можно всё равно…

3 года ago

Изменение почтового клиента по умолчанию в iOS 14 на Outlook, Spark, Gmail и другие

Одним из самых значительных изменений в операционной системе iOS 14 является возможность менять приложения по…

4 года ago

Включение пузырей уведомлений в чатах на Android 11

В системе Android 10 появился фреймворк для пузырей чатов, популярность которым принёс Messenger. Новая система…

4 года ago

Как настроить беспроводную отладку в Android 11

От загрузки в режим Fastboot при помощи одной команды до установки модов без рута, есть…

4 года ago

Главные проблемы Android 11 Beta и следует ли устанавливать её

Бета-версия операционной системы Android 11 в настоящее время доступна для устройств Google Pixel. Нужно посетить…

4 года ago