Тестирование обработки расширений файлов для чувствительной информации
Резюме
Расширения файлов широко используются на веб-серверах для определения того, какие технологии, языки и плагины необходимы для выполнения запроса. Хотя это поведение соответствует стандартам 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
).