XSpider для всемирной паутины
Андрей Абрамов, эксперт по ИБ компании Positive Technologies
Одной из отличительных особенностей сканера XSpider является наличие модуля эвристического анализа Web-приложений. Конечно, существуют специализированные сканеры Web-приложений, например, Nikto, но они не обладают возможностями по определению недостатков в других службах. С другой стороны, сканеры общего назначения, такие как Nessus, обладают крайне ограниченными возможностями по поиску уязвимостей «на 80м порту». XSpider совмещает в себе возможности обоих типов сканеров.
Обзор возможностей
В части анализа Web-приложений XSpider поддерживает следующие возможности:
- автоматическое определение Web-приложений на произвольных портах;
- работа с SSL/TLS;
- автоматический индексатор сайта с поддержкой функции поиска скрытых директорий и резервных копий файлов (Forced Browsing);
- поддержка аутентификации типа Basic и нестандартных схем аутентификации;
- автоматическое отслеживание сессий;
- поиск уязвимых и вредоносных сценариев (например php-shell) по содержимому страницы;
- эвристическое определение основных типов уязвимостей в Web-приложениях;
- определение уязвимостей в полях заголовка HTTP-запроса.
Настройка профиля
Залогом качественного сканирования является правильно настроенный профиль. Профиль определяет логику работы сканера, а также используемые методы поиска уязвимостей.
Настройка индексатора сайта
Для того, чтобы задействовать механизмы поиска уязвимостей, прежде всего, необходимо включить функцию анализатора контента (Профиль – Общие Настройки – Сканер уязвимостей – Определение уязвимостей – HTTP – включить анализатор контента).
Также в этом разделе расположена опция «включить анализатор директорий», которая задействует механизмы определения возможностей просмотра содержимого и записи в директории Web-сервера.
Раздел «Анализатор контента» (Профиль – Общие Настройки – Сканер уязвимостей – Определение уязвимостей – HTTP – Анализатор контента) содержит основные настройки индексатора.
Параметр «стартовая страница для анализатора» позволяет указать, с какого из разделов Web-сервера необходимо начать индексацию. Если задействована опция «не выходить за пределы стартовой директории», то сканер будет анализировать только сценарии, находящиеся по указанному пути и ниже. Использование этих настроек полезно, когда необходимо проанализировать конкретный раздел Web-сервера или отдельный сценарий. Кроме того, с их помощью можно разделить проверку больших Web-серверов на несколько задач, что облегчает последующий анализ результатов. Параметр «использовать запрос для стартовой страницы из файла» относится к механизмам аутентификации и будет рассмотрен далее.
Опции «использовать словарь при сборе контента» и «искать старые файлы» включают механизм поиска скрытых файлов и папок. Поиск проводится по обширному встроенному словарю, содержащему распространенные имена файлов и расширения. Данный механизм, несмотря на свою простоту, может быть весьма эффективным средством. Экспертам Positive Technologies приходилось сталкиваться с ситуациями, когда простой подбор по именам позволял получать доступ к базам данных сервера (например, /database/database.mdb) или к резервным копям исходных текстов сайтов.
Кроме настроек, вынесенных в графический интерфейс, существует возможность настройки индексатора путем редактирования конфигурационных файлов. Эти файлы расположены в папке «\Profiles\Http» рабочей директории сканера (например, «C:\Program Files\Positive Technologies\XSpider 7.5»). Файл AdditionalUrls.txt содержит пути к папкам и сценариям, которые должны быть добавлены к спискам проверяемых. Данная опция полезна для проверки Web-сайтов, использующих сложные для автоматического анализа технологии на стороне клиента (например, Java, Flash и т.д.). Для сбора списка сценариев в этом случае можно использовать различные HTTP-снифферы или Proxy-серверы, например, WebScarab (www.owasp.org/index.php/Category:OWASP_WebScarab_Project). Также к индексатору относится файл RequestIgnore.txt. В него заносятся пути и сценарии, которые не должны обрабатываться индексатором, и, соответственно, поиск уязвимостей в них осуществляться не будет.
Эти настройки могут быть использованы с различными целями. Например, если сайт реализует собственный механизм аутентификации, сюда могут быть занесены сценарии выхода из системы, чтобы сканер не прерывал собственную сессию. Также сюда могут быть внесены сценарии, автоматическое обследование которых может вызвать нежелательные последствия. Например – привести к передаче большого количества сообщений электронной почты или SMS. Однако, по мнению Positive Technologies, использование таких сценариев без дополнительных тестов Тьюринга является уязвимостью класса «Недостаточное противодействие автоматизации» (Inefficient Anti-Automation).
Механизмы аутентификации
Настройки аутентификации расположены в разделе «Профиль – Общие Настройки – Сканер уязвимостей – Определение уязвимостей – HTTP – Авторизация». Здесь можно указать имя пользователя и пароль, используемый для аутентификации типа Basic.
Включение опции «использовать расширенные словари логинов и паролей» задействует механизм подбора паролей (см. статью «Грубая сила – силища страшная!», www.securitylab.ru/analytics/286762.php). В текущей версии XSpider поддерживается подбор паролей только для аутентификации типа Basic. В случае, если сервер использует собственные механизмы аутентификации, можно использовать один из двух вариантов.
Первый из них – использование собственного стартового запроса (Профиль – Общие Настройки – Сканер уязвимостей – Определение уязвимостей – HTTP – Анализатор контента – использовать запрос для стартовой страницы из файла). В этом случае в файле («\Profiles\Http\Request.txt») указывается HTTP-запрос, используемый сканером при первом обращении к сайту. Получить содержимое запроса можно с помощью любого сетевого анализатора или генератора HTTP-запросов.
В этом случае на совести пользователя лежит корректность сформированного HTTP-запроса, поскольку сканер будет использовать его «как есть», без каких либо модификаций.
Второй метод удобно использовать, когда управление авторизаций распределено между несколькими сайтами, как сделано в различных системах типа «Passport». Например, сайты Yandex используют централизованную систему Яндекс-Паспорт, устанавливающую значение Cookie для всего домена .yandex.ru:
Set-Cookie: yafolder=10537279%3A1290000000001899275; domain=.yandex.ru; path=/;
В этом случае в файл \Profiles\Http\RequestAdd.txt добавляются HTTP-заголовки, которые будут пересылаться в каждом HTTP-запросе. Примером таких заголовков могут быть параметры Cookie, устанавливаемые сервером после входа в систему.
Поиск уязвимостей
В разделе «Профиль – Общие Настройки – Сканер уязвимостей – Определение уязвимостей – HTTP – Анализатор скриптов» можно указать какие из HTTP-методов будут использоваться в ходе эвристических проверок.
Опция «сложная проверка прикладных скриптов» используется для работы с серверами, использующими нестандартную схему именования запросов. Например, передающих параметры запроса не после символа «?».
Раздел «Типы уязвимостей» позволяет указать, какие из типов уязвимостей Web-серверов будут обнаружены.
Настройки раздела «Методы поиска» позволяют задействовать при поиске уязвимостей редко используемые поля, такие как заголовок Referer. Включение этих поверок увеличивает общее время проверок и нагрузку на сеть.
Логика работы
Если в ходе сканирования портов был идентифицирован Web-сервер, проводится поиск уязвимостей, соответствующих типу сервера (Internet Information Server, Apache и т.д.), а также установленных расширений (FrontPage, OpenSSL и т.п.).
Следующим этапом является авторизация и проверка хорошо известных уязвимостей Web-приложений. После этого включается механизм поиска скрытых директорий и индексации содержимого. В ходе сбора содержимого XSpider использует не только содержимое Web-страниц. Различные служебные и информационные файлы, содержащиеся на сервере (например, robots или readme.txt), так же анализируются на предмет получения информации о структуре данных сервера. В XSpider входит базовый анализатор JavaScript, позволяющий работать с AJAX-приложениями.
После построения карты сайта сканер переход к режиму поиска уязвимостей, которые отображаются в консоли программы по мере обнаружения.
В описании уязвимости приводится содержимое HTTP-запроса и ответа, по которым был сделан вывод о наличии проблемы.
Заключение
Естественно, не стоит думать, что любой, даже самый лучший сканер в состоянии обнаружить все уязвимости Web-приложений. Зачастую, уязвимость содержится в логике приложения, о которой сканер не имеет ни малейшего представления. Согласно статистике, полученной Positive Technologies в ходе и тестов на проникновение и оценки защищенности Web-приложений , в среднем, сканер обнаруживает около 70% уязвимостей.
И в завершении статьи приведем сводную таблицу возможностей XSpider по обнаружению уязвимостей согласно Web Application Security Consortium (www.webappsec.org/projects/threat/).
Тип уязвимости |
Поддержка XSpider |
Аутентификация |
|
Подбор |
Да (Basic) |
Недостаточная аутентификация |
Да |
Небезопасное восстановление паролей |
Нет, в связи с различием подходов реализации |
Авторизация |
|
Предсказуемое значение идентификатора сессии |
Да, в стандартных приложениях |
Недостаточная авторизация |
Да, в зависимости от системы разграничения доступа |
Отсутствие таймаута сессии |
Нет, в связи с трудностью формализации |
Атаки на клиентов |
|
Подмена содержимого |
Да |
Межсайтовое выполнение сценариев |
Да, включая методы обхода фильтров |
Расщепление HTTP-ответа |
Да, включая методы обхода фильтров |
Выполнение кода |
|
Переполнение буфера |
Да, в стандартных приложениях |
Атака на функции форматирования строк |
Да, в стандартных приложениях |
Внедрение операторов LDAP |
Да |
Выполнение команд ОС |
Да |
Внедрение операторов SQL |
Да, включая методы «слепой» вариант |
Внедрение серверных расширений |
Да |
Внедрение операторов XPath |
Да, включая методы «слепой» вариант |
Разглашение информации |
|
Индексирование директорий |
Да |
Идентификация приложений |
Да |
Утечка информации |
Да, в сочетании с ручным анализом результатов |
Обратный путь в директориях |
Да |
Предсказуемое расположение ресурсов |
Да |
Логические атаки |
|
Злоупотребление функциональными возможностями |
Нет, в связи с трудностью формализации |
Отказ в обслуживании |
Да, в стандартных приложениях |
Недостаточное противодействие автоматизации |
Да, в некоторых случаях |
Недостаточная проверка процесса |
Нет, в связи с трудностью формализации |
www.securitylab.ru