![](https://habrastorage.org/getpro/habr/upload_files/832/f20/bc9/832f20bc9e26856b3c61b2b1056c7242.jpg)
Сегодня почти у каждой организации есть собственный веб-сайт. Вместе с ростом интернета возрастают и атаки на веб-сайты, становясь все более серьезнее и масштабнее. Однако существует обширный список инструментов, которые могут производить сканирование и находить уязвимости в веб-приложениях. Одним из таких инструментов является сканер уязвимостей под названием 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 до версии 2023.1 OWASP ZAP уже предустановлен в системе (при условии, что на этапе установке ОС в разделе Software selection был выбран пункт default recommended tools или large default selection plus additional tools, в противном случае установить OWASP ZAP необходимо вручную).
В качестве примера будет использоваться последняя актуальная версия 2.12.0 в ОС Kali Linux.
Принцип работы
При сканировании ZAP создает собственный прокси-сервер, через который обрабатываются все запросы на сканирование. ZAP включает в себя специальные поисковые роботы (краулеры), которые выполняют идентификацию уязвимостей. Прокси-сервер располагается между браузером пользователя и конечным веб-приложением. Схема работы изображена ниже.
![](https://habrastorage.org/getpro/habr/upload_files/e14/a7f/699/e14a7f699e483c0e8d5d408c10afd308.png)
Обзор основных функций графического интерфейса OWASP ZAP
После запуска программы отображается главное окно, в котором находятся следующие основные параметры:
![](https://habrastorage.org/getpro/habr/upload_files/db9/0c7/4fb/db90c74fbe183cecf8229ff96870af98.png)
1) Режимы сканирования
В OWASP ZAP существуют 4 режима сканирования:
Standard Mode — обычное сканирование;
Safe Mode — безопасное сканирование, позволяющее выполнять только те действия, которые не смогут навредить системе. В этом режиме не используются атаки на целевой сайт;
Protected Mode — защищенное сканирование, позволяющее имитировать потенциально опасные уязвимости;
ATTACK Mode — режим атаки, позволяющий, помимо сканирования, также выполнять атаки на потенциальный сайт/приложение.
![](https://habrastorage.org/getpro/habr/upload_files/9d1/be7/a3c/9d1be7a3cefe755a81a6615a6033d63e.png)
2) Сайты
Здесь отображаются сайты, которые сканируются в данный момент или уже были просканированы. Также в данном разделе отображается полная структура сайта.
![](https://habrastorage.org/getpro/habr/upload_files/bbc/63d/a64/bbc63da644d9ab9154c1fdc9b608d643.png)
3) Раздел со сканированием
Основной раздел, в котором запускается сканирование сайта.
![](https://habrastorage.org/getpro/habr/upload_files/4bc/646/a1d/4bc646a1d9a685107bbbccfa6334b14e.png)
4) Результаты
Раздел с результатами располагается внизу и подразделяется на вкладки History, Search, Alerts, Output.
History — отображает список всех запросов в том порядке, в котором они были отправлены;
Search — позволяет производить поиск при помощи регулярных выражений в URL-адресах, запросах, ответах, заголовках;
Alerts — отображает найденные уязвимости в сканированном веб-сайте. Уязвимости разбиты на категории. Каждой найденной уязвимости присваивается степень критичности. Описание данного раздела будет рассмотрено далее;
Output — отображает различные информационные сообщения. Например, трассировку стека, ошибки и другую отладочную информацию.
![](https://habrastorage.org/getpro/habr/upload_files/d30/872/d73/d30872d736f59aae370807dad9bfe426.png)
Плагины
OWASP ZAP поддерживает установку сторонних плагинов, благодаря чему можно существенно расширить функциональность программы. Для перехода в раздел Плагины необходимо щелкнуть по значку с названием Manage Add-ons:
![](https://habrastorage.org/getpro/habr/upload_files/a84/e36/0a3/a84e360a3ce91594c04fac949a457cbc.png)
В открывшемся окне будет два раздела — Installed и Marketplace. В разделе Installed отображается список всех установленных плагинов в системе.
![](https://habrastorage.org/getpro/habr/upload_files/5b2/53d/43b/5b253d43b8c1514e3dda1a982e710fe7.png)
В разделе Marketplace можно находить плагины и устанавливать их.
Если щелкнуть по плагину, то внизу отобразится его имя, статус, версия и описание. Также предусмотрены ссылки на документацию к плагину и на его исходный код на сайте GitHub. Плагины разрабатывает команда OWASP и энтузиасты. У всех плагинов открытый исходный код, и они полностью бесплатны в использовании.
![](https://habrastorage.org/getpro/habr/upload_files/bbf/61a/4f4/bbf61a4f46cd569283e13f491a006af7.png)
Также для просмотра и поиска необходимых плагинов можно перейти на официальный сайт в раздел плагины:
![](https://habrastorage.org/getpro/habr/upload_files/2ce/e0b/814/2cee0b814eca36132eb53a15bad6ab7e.png)
Сканирование веб-сайтов на наличие уязвимостей
Перейдем к процессу сканирования. В качестве теста возьмем сайт 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, будет обрабатывать легче. Работает медленнее, чем обычный паук.
![](https://habrastorage.org/getpro/habr/upload_files/cb6/5bf/929/cb65bf92985dffb286924e49ccb2e5e3.png)
Для того чтобы начать сканирование/атаку, необходимо нажать на кнопку Attack.
![](https://habrastorage.org/getpro/habr/upload_files/341/b50/c50/341b50c507915befbfdc5ae39ba3a264.png)
После этого начнется процесс сканирования. Сначала запускается «паук», который ищет все URL, имеющие отношение к сканирующему сайту. В столбце Method отображаются методы, которые используются для получения URL и их статусы (столбец Processed).
Как правило, используются методы GET и POST. Если статус 200, то отображается зеленый кружок, если статусы 404 или 500, то — красный. В зависимости от структуры сайта и его наполнения сканирование на URL может занять длительное время. После того как все URL найдены запускается активное сканирование.
Активное сканирование — сканирование, при котором осуществляется попытка найти потенциальные уязвимости, используя известные атаки.
Для просмотра атак, которые используются при активном сканировании, а также для просмотра их прогресс-статуса необходимо нажать на кнопку со значком мониторинга — Show scan progress details:
![](https://habrastorage.org/getpro/habr/upload_files/b44/3d2/b20/b443d2b20873f3baddbdff3adf2c2459.png)
Название уязвимости отображено в столбце Analyser, прогресс сканирования отображается в столбце Progress. В столбце Elapsed выводится время, которое было затрачено на сканирование данной уязвимости.
В числе атак, которые использует ZAP, можно выделить такие атаки как SQL-инъекции, XSS (Cross-site-scripting), CRLF-инъекции и т.д. Также, помимо атак, происходит сбор информации, включающий в себя версии и названия используемых компонентов — такие как веб-сервер, СУБД.
Так же, как и с поиском ULR, процесс активного сканирования может занять долгое время.
![](https://habrastorage.org/getpro/habr/upload_files/070/10a/97d/07010a97daeb1474b65064e5a908b33f.png)
Любую проверку можно пропустить, нажав на кнопку с синей стрелкой — Skip active scanner:
![](https://habrastorage.org/getpro/habr/upload_files/c3a/04c/dba/c3a04cdbabb461f3804690536cba5857.png)
Все найденные уязвимости будут находиться в разделе Alerts. Уязвимости группируются по категориям:
![](https://habrastorage.org/getpro/habr/upload_files/adc/b89/d29/adcb89d29ca2fa1ec553a8d4882267bf.png)
С полным списком всех возможных уязвимостей, которые распознает и использует OWASP ZAP, а также их подробное описание можно найти в соответствующем разделе на официальном сайте ZAP.
Каждой группе уязвимостей присваивается уровень риска, который обозначается своей цветовой гаммой. В OWASP ZAP существует 5 таких категорий:
![](https://habrastorage.org/getpro/habr/upload_files/710/bb9/b6b/710bb9b6b500adffe12716bc7864265d.png)
High — самый высокий (критический) уровень уязвимостей. Сюда относят SQL-инъекции, атаки типа path traversal, LDAP-инъекции, Spring4Shell и другие. Обозначается красным флажком.
Medium — средний уровень критичности найденных уязвимостей. Сюда относят Directory Browsing, HTTPOnly, XSLT-инъекции и другие. Обозначается оранжевым флажком.
Low — низкий уровень найденных уязвимостей. Сюда относят найденную информацию, связанную с отладкой, раскрытие частных IP-адресов (Private IP Disclosure) и другие. Обозначается жёлтым флажком.
Informational — информационный уровень, который сообщает о том, что найдена информация об используемых компонентах веб-сайта, а также о сервере. Сюда относят версии веб-сервера, СУБД, библиотек, фреймворков, а также версии языков программирования и операционных систем. Как правило, уязвимости, относящиеся к данной категории не могут напрямую навредить системе, однако повышают риск сбора информации о сайте и его компонентах. Обозначается синим флажком.
False Positive — ложные срабатывания. В редких случаях ZAP может найти уязвимость, которая не является уязвимостью. Если возникает сомнение, то программа помечает такую «уязвимость» зеленым флажком. Однако пользователь должен сам убедиться и проверить, является ли найденная уязвимость таковой или нет.
После того как сканирование было завершено, в разделе Alerts отобразятся все найденные проблемы безопасности. Если раскрыть группу уязвимости, то отобразятся все URL, в которых были найдены уязвимости данного типа:
![](https://habrastorage.org/getpro/habr/upload_files/9d8/b55/347/9d8b5534780e42a507b366d638efe420.png)
Справа будет отображено полное описание, которые включает в себя тип атаки, риск, CWE номер, WASC номер, описание, а также способ устранения найденной уязвимости. Также отобразить всю подробную информацию можно в отдельном окне путем двойного щелчка левой кнопки мыши по уязвимости:
![](https://habrastorage.org/getpro/habr/upload_files/58f/5ee/d6b/58f5eed6b14438814434fb9f3dcfb24d.png)
Если щелкнуть правой кнопкой мыши по уязвимости, то отобразится контекстное меню, в котором доступно большое количество опций, например, можно сразу перейти по URL, где найдена уязвимость (Open URL in Browser), сохранить страницу в формате XML (Save XML) или в «сыром» формате (Save Raw), удалить уязвимость из текущего списка сканирования (Delete) и другие опции:
![](https://habrastorage.org/getpro/habr/upload_files/ef5/9f6/1fa/ef59f61fa61fde67ca5ac10592371cef.png)
Если уязвимое место найдено непосредственно в HTML коде или в коде JavaScript, то такой участок будет выделен, чтобы его можно было сразу опознать:
![](https://habrastorage.org/getpro/habr/upload_files/a91/f5c/455/a91f5c4559153f02c392337332db3ab6.png)
Также отображается HTTP/HTTPS заголовок и его параметры:
![](https://habrastorage.org/getpro/habr/upload_files/0b5/192/d3e/0b5192d3e0bc97841045c3b715f54c46.png)
Убедимся, что на просканированном сайте действительно найдены уязвимости. В качестве примера возьмем две атаки — SQL-инъекцию и XSS.
В разделе Alerts необходимо раскрыть группу под названием SQL Injection и перейти по найденной ссылке:
![](https://habrastorage.org/getpro/habr/upload_files/689/7e3/824/6897e3824bc47c42601c9b8b4c5a11c2.png)
Далее необходимо изменить строку с параметром на другой символ, например на символ одинарной кавычки. URL выглядит так — http://testphp.vulnweb.com/listproducts.php?artist=3+AND+1%3D1+--+
![](https://habrastorage.org/getpro/habr/upload_files/fa0/770/ce5/fa0770ce5a33c66e72cec1b17837f22b.png)
Удаляем все, что написано после символа равно. В данном случае меняем параметр 3+AND+1%3D1+--+ на символ ‘ и переходим по новой ссылке:
![](https://habrastorage.org/getpro/habr/upload_files/d0e/436/3b9/d0e4363b96651a1d5bbc7183ceba3691.png)
Как можно увидеть, появилось сообщение об ошибке в SQL синтаксисе, благодаря которому на данном сайте возможно произвести SQL-инъекцию.
Далее проверим, можно ли произвести XSS атаку. Для этого необходимо раскрыть группу с названием Cross Site Scripting и перейти по ссылке, где была найдена эта уязвимость:
![](https://habrastorage.org/getpro/habr/upload_files/f39/69d/857/f3969d85780c19098172ab4a6dbdc5af.png)
В этом разделе сайта присутствует поле для ввода текста:
![](https://habrastorage.org/getpro/habr/upload_files/4ad/496/651/4ad496651f40bd4b6ab1429b11b93613.png)
Введем в него JavaScript код:
<script>alert("Test!")</script>
![](https://habrastorage.org/getpro/habr/upload_files/245/d5c/a2c/245d5ca2c59b966b5ebf27420807f48f.png)
Как можно увидеть, сайт принял введенный JavaScript код и отобразил диалоговое окно с текстом Test!
Создание отчета
OWASP ZAP позволяет генерировать отчеты по результатам сканирования. Для того чтобы создать отчет, необходимо перейти в раздел Report, далее выбрать Generate Report:
![](https://habrastorage.org/getpro/habr/upload_files/b96/770/da7/b96770da736baf772c4ae71e680f28c4.png)
В открывшемся окне будет предложено изменить отчет перед его созданием. В разделе Scope можно задать базовые настройки — Заголовок отчета (Report Title), имя отчета (Report Name), путь, куда будет сохранен отчет (Report Directory):
![](https://habrastorage.org/getpro/habr/upload_files/05c/62d/76f/05c62d76fe21b0f93875997c58a4587a.png)
В разделе Template можно выбрать один из предложенных шаблонов для сохранения отчета. Каждый шаблон оформлен по-особенному. В качестве примера сгенерируем отчет при помощи шаблона High Level Report Sample, в котором найденные уязвимости будут отображены в виде круговой диаграммы:
![](https://habrastorage.org/getpro/habr/upload_files/8c1/7be/539/8c17be5391f639e826a65771dc9c6b00.png)
В разделе Filter можно выбрать, какие группы рисков стоит включить или исключить из отчета:
![](https://habrastorage.org/getpro/habr/upload_files/c36/706/b24/c36706b243118b2cf2a15db7db2e99be.png)
После того как все параметры для генерации заданы, необходимо нажать на кнопку Generate Report. После этого отчет будет сохранен по ранее заданному пути, а также будет открыт автоматически в браузере пользователя:
![](https://habrastorage.org/getpro/habr/upload_files/d32/9a2/a3d/d329a2a3d4fcbd225952dff9b56e84b6.png)
![](https://habrastorage.org/getpro/habr/upload_files/829/01c/1f4/82901c1f4cb4c077256f32de17944c26.png)
Подводя итог, можно сказать, что сканер OWASP ZAP является отличным, бесплатным решением для поиска уязвимостей на сайтах и в веб-приложениях. Функциональность программы можно расширить при помощи плагинов. Также имеется обширная документация и подробное описание всех используемых уязвимостей.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.