Перейти к содержанию

Тестирование обработки расширений файлов для чувствительной информации

Резюме

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

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

Определение того, как веб-серверы обрабатывают запросы к файлам с разными расширениями, помогает понять поведение сервера в зависимости от типа файлов. Например, это может помочь выяснить, какие расширения возвращаются в виде текста или обычного файла, а какие приводят к выполнению серверных скриптов. Последние могут указывать на используемые технологии, языки или плагины, что дает представление о структуре веб-приложения. Например, расширение ".pl" обычно связано с поддержкой серверного языка Perl. Однако одно расширение может вводить в заблуждение, поскольку серверные ресурсы могут быть переименованы, чтобы скрыть их истинную природу. Дополнительную информацию о технологиях можно получить в разделе "Компоненты веб-сервера".

Цели тестирования

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

Как тестировать

Принудительный просмотр (Forced Browsing)

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

Если архитектура веб-приложения использует балансировку нагрузки, важно протестировать все веб-серверы. Это может быть непросто, в зависимости от конфигурации инфраструктуры балансировки. В инфраструктуре с резервированием компонентов могут быть небольшие различия в конфигурации отдельных серверов. Это может произойти, если веб-архитектура использует разные технологии (например, набор серверов IIS и Apache в конфигурации балансировки нагрузки, что может привести к несимметричному поведению и различным уязвимостям между ними).

Пример

Тестировщик обнаружил файл с именем connection.inc. Попытка доступа к нему напрямую возвращает его содержимое, которое включает:

<?
    mysql_connect("127.0.0.1", "root", "password")
        or die("Could not connect");
?>

Тестировщик определяет наличие MySQL DBMS на сервере и использует слабые учетные данные, применяемые веб-приложением для доступа к базе данных.

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

  • .asa
  • .inc
  • .config

Следующие расширения файлов связаны с теми файлами, которые при доступе могут быть либо отображены, либо загружены браузером. Поэтому файлы с этими расширениями должны быть проверены на предмет того, действительно ли они должны предоставляться сервером (и не являются ли остатками), а также что они не содержат конфиденциальную информацию:

  • .zip, .tar, .gz, .tgz, .rar и другие архивы: архивные файлы, которые могут содержать чувствительные данные.
  • .java: нет причин предоставлять доступ к исходным файлам Java.
  • .txt: текстовые файлы, которые могут содержать важную информацию.
  • .pdf: PDF-документы, которые могут включать конфиденциальные данные.
  • .docx, .rtf, .xlsx, .pptx и другие офисные документы: файлы могут содержать информацию, предназначенную только для внутреннего использования.
  • .bak, .old и другие расширения, указывающие на резервные копии (например, ~ для резервных файлов Emacs).

Этот список включает лишь некоторые примеры, так как существует слишком много расширений, чтобы рассматривать их все. Для более полного списка расширений можно обратиться к базе данных FILExt.

Идентификация файлов с определенными расширениями
Для поиска файлов с указанными расширениями можно использовать различные методы, такие как:

  • Сканеры уязвимостей
  • Инструменты для сканирования и зеркалирования
  • Ручной осмотр веб-приложения (это помогает преодолеть ограничения автоматических сканеров)
  • Поисковые системы (см. разделы «Тестирование: сканирование и использование поисковиков»).

Загрузка файлов

Механизм обработки файлов в формате Windows 8.3 (наследие старых систем) иногда может быть использован для обхода фильтров загрузки файлов.

Примеры использования:

  • Файл file.phtml будет обработан как PHP-код.
  • Файл FILE~1.PHT будет загружен, но не обработан обработчиком PHP ISAPI.
  • Файл shell.phPWND может быть загружен.
  • Файл SHELL~1.PHP будет преобразован и возвращён оболочкой ОС, а затем обработан обработчиком PHP ISAPI.

Gray-Box тестирование
Проведение white-box тестирования обработки расширений файлов предполагает проверку конфигураций веб-серверов или серверов приложений, участвующих в архитектуре веб-приложения, и проверку того, как они настроены на обработку различных расширений файлов.

Если веб-приложение полагается на балансировочную, гетерогенную инфраструктуру, важно определить, может ли это привести к различному поведению серверов.

Инструменты

Сканеры уязвимостей, такие как Nessus и Nikto, могут проверять существование известных веб-директории. Эти инструменты позволяют тестировщику загрузить структуру веб-сайта, что полезно при попытке определить конфигурацию веб-директорий и как обрабатываются отдельные расширения файлов. Другие инструменты, которые можно использовать для этих целей, включают:

  • wget
  • curl
  • Поисковики для поиска "инструментов зеркалирования веб-сайтов" (web mirroring tools).