Сегодня почти у каждой организации есть собственный веб-сайт. Вместе с ростом интернета возрастают и атаки на веб-сайты, становясь все более серьезнее и масштабнее. Однако существует обширный список инструментов, которые могут производить сканирование и находить уязвимости в веб-приложениях. Одним из таких инструментов является сканер уязвимостей под названием OWASP ZAP.
OWASP ZAP — сканер веб-приложений, основанный на методике DAST (Dynamic Application Security Testing). В русском варианте этот метод принято называть методом тестирования «черного ящика». Методика позволяет обнаруживать проблемы безопасности в работающем приложении или веб-сайте при помощи их сканирования на известные уязвимости. К таким уязвимостям можно отнести SQL-инъекции, межсайтовый скриптинг (XSS), Clickjacking и т.д.
OWASP ZAP разработан и поддерживается одноименным проектом под названием OWASP (Open Web Application Security Project) — некоммерческой организацией, которая специализируется на создании статей, материалов, документации, инструментов и технологий, позволяющих разрабатывать приложения безопаснее, а также обеспечивать должный уровень информационной безопасности уже созданных приложений и сайтов.
В качестве преимуществ OWASP ZAP можно выделить:
Кроссплатформенность — поддержка всех основных ОС (Windows, Linux, MacOS);
Бесплатный проект с открытым исходным кодом;
Поддержка плагинов для расширения функциональности;
Возможность работы как через графический интерфейс (GUI), так и через интерфейс командной строки;
Обширный набор функций — от активного/пассивного сканирования и до сканирования API и AJAX;
Простота использования. Идеально подходит и для начинающих специалистов в ИБ и для профессионалов.
Установка
OWASP ZAP является кроссплатформенным ПО и может быть установлен на Windows, Linux и MacOS. Также запуск возможен в контейнере Docker. Для установки и запуска программы на Windows и Linux требуется заранее предустановленная Java версии 11 и выше. Установщик для MacOS уже включает в себя Java. Для запуска в контейнере Docker также заранее не нужна предустановленная Java. На официальном сайте находятся установщики и инструкции для каждой ОС.
Для Docker отдельно представлены образы со следующими тегами:
Stable — стандартная (обычная) версия;
Bare — минимальный версия. Содержит только самые необходимые функции. Идеально подходит для запуска в командной строке;
Weekly — версия, обновления для которой выходят каждую неделю;
Live — бета-версия. Содержит самый последний релиз.
В дистрибутиве Kali Linux OWASP ZAP уже предустановлен в системе (при условии, что на этапе установке ОС в разделе Software selection был выбран пункт default recommended tools или large default selection plus additional tools, в противном случае установить OWASP ZAP необходимо вручную).
В качестве примера будет использоваться последняя актуальная версия 2.12.0 в ОС Kali Linux.
Принцип работы
При сканировании ZAP создает собственный прокси-сервер, через который обрабатываются все запросы на сканирование. ZAP включает в себя специальные поисковые роботы (краулеры), которые выполняют идентификацию уязвимостей. Прокси-сервер располагается между браузером пользователя и конечным веб-приложением. Схема работы изображена ниже.
Обзор основных функций графического интерфейса OWASP ZAP
После запуска программы отображается главное окно, в котором находятся следующие основные параметры:
1) Режимы сканирования
В OWASP ZAP существуют 4 режима сканирования:
Standard Mode — обычное сканирование;
Safe Mode — безопасное сканирование, позволяющее выполнять только те действия, которые не смогут навредить системе. В этом режиме не используются атаки на целевой сайт;
Protected Mode — защищенное сканирование, позволяющее имитировать потенциально опасные уязвимости;
ATTACK Mode — режим атаки, позволяющий, помимо сканирования, также выполнять атаки на потенциальный сайт/приложение.
2) Сайты
Здесь отображаются сайты, которые сканируются в данный момент или уже были просканированы. Также в данном разделе отображается полная структура сайта.
3) Раздел со сканированием
Основной раздел, в котором запускается сканирование сайта.
4) Результаты
Раздел с результатами располагается внизу и подразделяется на вкладки History, Search, Alerts, Output.
History — отображает список всех запросов в том порядке, в котором они были отправлены;
Search — позволяет производить поиск при помощи регулярных выражений в URL-адресах, запросах, ответах, заголовках;
Alerts — отображает найденные уязвимости в сканированном веб-сайте. Уязвимости разбиты на категории. Каждой найденной уязвимости присваивается степень критичности. Описание данного раздела будет рассмотрено далее;
Output — отображает различные информационные сообщения. Например, трассировку стека, ошибки и другую отладочную информацию.
Плагины
OWASP ZAP поддерживает установку сторонних плагинов, благодаря чему можно существенно расширить функциональность программы. Для перехода в раздел Плагины необходимо щелкнуть по значку с названием Manage Add-ons:
В открывшемся окне будет два раздела — Installed и Marketplace. В разделе Installed отображается список всех установленных плагинов в системе.
В разделе Marketplace можно находить плагины и устанавливать их.
Если щелкнуть по плагину, то внизу отобразится его имя, статус, версия и описание. Также предусмотрены ссылки на документацию к плагину и на его исходный код на сайте GitHub. Плагины разрабатывает команда OWASP и энтузиасты. У всех плагинов открытый исходный код, и они полностью бесплатны в использовании.
Также для просмотра и поиска необходимых плагинов можно перейти на официальный сайт в раздел плагины:
Сканирование веб-сайтов на наличие уязвимостей
Перейдем к процессу сканирования. В качестве теста возьмем сайт testphp.vulnweb.com, который специально создан для тестирования на безопасность, и в котором уже присутствуют некоторые уязвимости. Тем самым будет наглядно показан процесс сканирования и поиск уязвимостей. Список сайтов, которые содержат уязвимости, можно взять с vulnweb.com.
Для того чтобы запустить сканирование, необходимо перейти в раздел Quick Start. Рассмотрим его параметры:
URL to attack — задается URL сайта, который необходимо просканировать/атаковать.
Use traditional spider — использование стандартного «паука» при сканировании.
В терминологии OWASP ZAP паук — это инструмент, который предназначен для автоматического обнаружения новых URL-адресов на проверяемом сайте. «Паук» анализирует HTML-код страницы для поиска ссылок, далее найденные ссылки добавляются в список и также сканируются на наличие уязвимостей. Если чек-бокс будет проставлен, то будет использоваться стандартный «паук», в противном случае найденные URL на странице сканироваться не будут.
USE ajax spider — использование ajax «паука» при сканировании. Если в сканируемом сайте активно используется технология ajax (Asynchronous Javascript and XML — асинхронный JavaScript и XML), то можно использовать данный параметр. В этом режиме приложение, основанное на ajax, будет обрабатывать легче. Работает медленнее, чем обычный паук.
Для того чтобы начать сканирование/атаку, необходимо нажать на кнопку Attack.
После этого начнется процесс сканирования. Сначала запускается «паук», который ищет все URL, имеющие отношение к сканирующему сайту. В столбце Method отображаются методы, которые используются для получения URL и их статусы (столбец Processed).
Как правило, используются методы GET и POST. Если статус 200, то отображается зеленый кружок, если статусы 404 или 500, то — красный. В зависимости от структуры сайта и его наполнения сканирование на URL может занять длительное время. После того как все URL найдены запускается активное сканирование.
Активное сканирование — сканирование, при котором осуществляется попытка найти потенциальные уязвимости, используя известные атаки.
Для просмотра атак, которые используются при активном сканировании, а также для просмотра их прогресс-статуса необходимо нажать на кнопку со значком мониторинга — Show scan progress details:
Название уязвимости отображено в столбце Analyser, прогресс сканирования отображается в столбце Progress. В столбце Elapsed выводится время, которое было затрачено на сканирование данной уязвимости.
В числе атак, которые использует ZAP, можно выделить такие атаки как SQL-инъекции, XSS (Cross-site-scripting), CRLF-инъекции и т.д. Также, помимо атак, происходит сбор информации, включающий в себя версии и названия используемых компонентов — такие как веб-сервер, СУБД.
Так же, как и с поиском ULR, процесс активного сканирования может занять долгое время.
Любую проверку можно пропустить, нажав на кнопку с синей стрелкой — Skip active scanner:
Все найденные уязвимости будут находиться в разделе Alerts. Уязвимости группируются по категориям:
С полным списком всех возможных уязвимостей, которые распознает и использует OWASP ZAP, а также их подробное описание можно найти в соответствующем разделе на официальном сайте ZAP.
Каждой группе уязвимостей присваивается уровень риска, который обозначается своей цветовой гаммой. В OWASP ZAP существует 5 таких категорий:
High — самый высокий (критический) уровень уязвимостей. Сюда относят SQL-инъекции, атаки типа path traversal, LDAP-инъекции, Spring4Shell и другие. Обозначается красным флажком.
Medium — средний уровень критичности найденных уязвимостей. Сюда относят Directory Browsing, HTTPOnly, XSLT-инъекции и другие. Обозначается оранжевым флажком.
Low — низкий уровень найденных уязвимостей. Сюда относят найденную информацию, связанную с отладкой, раскрытие частных IP-адресов (Private IP Disclosure) и другие. Обозначается жёлтым флажком.
Informational — информационный уровень, который сообщает о том, что найдена информация об используемых компонентах веб-сайта, а также о сервере. Сюда относят версии веб-сервера, СУБД, библиотек, фреймворков, а также версии языков программирования и операционных систем. Как правило, уязвимости, относящиеся к данной категории не могут напрямую навредить системе, однако повышают риск сбора информации о сайте и его компонентах. Обозначается синим флажком.
False Positive — ложные срабатывания. В редких случаях ZAP может найти уязвимость, которая не является уязвимостью. Если возникает сомнение, то программа помечает такую «уязвимость» зеленым флажком. Однако пользователь должен сам убедиться и проверить, является ли найденная уязвимость таковой или нет.
После того как сканирование было завершено, в разделе Alerts отобразятся все найденные проблемы безопасности. Если раскрыть группу уязвимости, то отобразятся все URL, в которых были найдены уязвимости данного типа:
Справа будет отображено полное описание, которые включает в себя тип атаки, риск, CWE номер, WASC номер, описание, а также способ устранения найденной уязвимости. Также отобразить всю подробную информацию можно в отдельном окне путем двойного щелчка левой кнопки мыши по уязвимости:
Если щелкнуть правой кнопкой мыши по уязвимости, то отобразится контекстное меню, в котором доступно большое количество опций, например, можно сразу перейти по URL, где найдена уязвимость (Open URL in Browser), сохранить страницу в формате XML (Save XML) или в «сыром» формате (Save Raw), удалить уязвимость из текущего списка сканирования (Delete) и другие опции:
Если уязвимое место найдено непосредственно в HTML коде или в коде JavaScript, то такой участок будет выделен, чтобы его можно было сразу опознать:
Также отображается HTTP/HTTPS заголовок и его параметры:
Убедимся, что на просканированном сайте действительно найдены уязвимости. В качестве примера возьмем две атаки — SQL-инъекцию и XSS.
В разделе Alerts необходимо раскрыть группу под названием SQL Injection и перейти по найденной ссылке:
Далее необходимо изменить строку с параметром на другой символ, например на символ одинарной кавычки. URL выглядит так — http://testphp.vulnweb.com/listproducts.php?artist=3+AND+1%3D1+--+
Удаляем все, что написано после символа равно. В данном случае меняем параметр 3+AND+1%3D1+--+ на символ ‘ и переходим по новой ссылке:
Как можно увидеть, появилось сообщение об ошибке в SQL синтаксисе, благодаря которому на данном сайте возможно произвести SQL-инъекцию.
Далее проверим, можно ли произвести XSS атаку. Для этого необходимо раскрыть группу с названием Cross Site Scripting и перейти по ссылке, где была найдена эта уязвимость:
В этом разделе сайта присутствует поле для ввода текста:
Введем в него JavaScript код:
<script>alert("Test!")</script>
Как можно увидеть, сайт принял введенный JavaScript код и отобразил диалоговое окно с текстом Test!
Создание отчета
OWASP ZAP позволяет генерировать отчеты по результатам сканирования. Для того чтобы создать отчет, необходимо перейти в раздел Report, далее выбрать Generate Report:
В открывшемся окне будет предложено изменить отчет перед его созданием. В разделе Scope можно задать базовые настройки — Заголовок отчета (Report Title), имя отчета (Report Name), путь, куда будет сохранен отчет (Report Directory):
В разделе Template можно выбрать один из предложенных шаблонов для сохранения отчета. Каждый шаблон оформлен по-особенному. В качестве примера сгенерируем отчет при помощи шаблона High Level Report Sample, в котором найденные уязвимости будут отображены в виде круговой диаграммы:
В разделе Filter можно выбрать, какие группы рисков стоит включить или исключить из отчета:
После того как все параметры для генерации заданы, необходимо нажать на кнопку Generate Report. После этого отчет будет сохранен по ранее заданному пути, а также будет открыт автоматически в браузере пользователя:
Подводя итог, можно сказать, что сканер OWASP ZAP является отличным, бесплатным решением для поиска уязвимостей на сайтах и в веб-приложениях. Функциональность программы можно расширить при помощи плагинов. Также имеется обширная документация и подробное описание всех используемых уязвимостей.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
mrkaban
Хороший обзор, спасибо. Регулярно тестирую всеми доступными инструментами и нужно сказать, что OWASP ZAP весьма неплохой!