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

Комментарии (2)


  1. mrkaban
    11.01.2023 07:47

    Хороший обзор, спасибо. Регулярно тестирую всеми доступными инструментами и нужно сказать, что OWASP ZAP весьма неплохой!


  1. hofijo
    11.01.2023 14:18

    На режимы работы никогда не обращал внимания! Интересно.