![](https://habrastorage.org/getpro/habr/upload_files/893/bf7/10b/893bf710b78c3344e5c056cdfc603fa2.png)
Все, кто связан со сферой Application Security / DevSecOps, так или иначе слышали или даже применяют продукт OWASP ZAP. Данное приложение представляет из себя open source-инструмент для динамического сканирования веб-приложений (DAST). Но мало просто запустить сканирование приложения инструментом, надо суметь его правильно настроить.
Одним из важных этапов настройки DAST-сканирования является авторизация в приложении, а также поддержка сессии в течение всего сканирования. Чтобы настроить авторизованные сканирования на ZAP, необходимо учесть три вещи:
1. То, как сделать запрос аутентификации. ZAP поддерживает следующие варианты: на основе отправки формы, JSON-данных, HTTP/NTLM-аутентификацию, аутентификацию на основе скрипта, вручную.
2. То, как происходит обработка сеанса в приложении. Другими словами, как ZAP будет поддерживать отправку авторизованных запросов к приложению в течение сканирования. На данный момент есть поддержка сессии на основе cookie, заголовка, с использованием скрипта и поддержка сессий на основе HTTP-аутентификации. О поддержке сессии на основе заголовка мы и поговорим в данной статье.
3. То, как определяется, аутентифицированы ли запросы от ZAP (настройка стратегии проверки). ZAP умеет отправлять запрос на определенный URL для сравнения полученного ответа с его авторизованной версией, либо производить подобную проверку на каждый запрос.
Ранее для управления сессией сканирования через заголовки приходилось использовать скрипты в самом ZAP, например ZEST, JavaScript или Python.
Пример добавления скрипта для авторизации через JWT, который был необходим до выхода плагина:
![Gif взят из репозитория https://github.com/rezen. Gif взят из репозитория https://github.com/rezen.](https://habrastorage.org/getpro/habr/upload_files/975/004/d3d/975004d3dcd7aa80ab02dbc33018f924.gif)
Теперь OWASP ZAP умеет поддерживать сессию на основе заголовков посредством плагина Authentication Helper, который можно установить в магазине ZAP Marketplace:
![Установка плагина Authentication Helper. Установка плагина Authentication Helper.](https://habrastorage.org/getpro/habr/upload_files/c8c/63c/82e/c8c63c82edd229de90f7ce17f29031e5.png)
Релиз плагина состоялся в январе 2023 года, и продолжается его активное развитие — на момент написания статьи актуальна версия 0.3.0. Отметим, что этот Add-on также позволяет автоматически определять тип аутентификации в приложении и сразу самостоятельно менять этот тип в Context-настройке. Посмотрим на практике, как осуществляется авторизация через JWT-токен в ZAP, используя для примера наше приложение Stingray.
При успешной авторизации в приложении нам возвращается access-токен, который также необходимо использовать при проведении ZAP-сканирований:
![Тело ответа при успешной авторизации. Тело ответа при успешной авторизации.](https://habrastorage.org/getpro/habr/upload_files/cba/172/ce9/cba172ce93fd5af2c29ce16787ccccfc.png)
При настройке Context в пункте Session Management теперь доступно поле Header-based Session Management. Заполняется оно следующим образом:
![Настройки по управлению сессией. Настройки по управлению сессией.](https://habrastorage.org/getpro/habr/upload_files/74b/bb4/e36/74bbb4e3640c5045ed70ea68ff6f5622.png)
Объяснение. Так как для поддержки авторизованных запросов используется заголовок Authorization, укажем его в первом поле. Значение заголовка Authorization при запросах: Bearer <token>, соответственно поле Value заполняется этим же значением, а в фигурных скобках обозначается, какое значение из тела JSON нужно подставлять. Таким образом, мы получаем возможность быстро настроить авторизованные запросы к приложению через ZAP-сканирование:
![Автоматические запросы для проверки авторизованного состояния сессии. Автоматические запросы для проверки авторизованного состояния сессии.](https://habrastorage.org/getpro/habr/upload_files/0c2/a83/873/0c2a838731216229224bcb6dbe750d68.png)
После запуска Spider (выполняет кроулинг — обход сайта) мы видим во вкладке History, что запросы проверки авторизации возвращают 200 код, что свидетельствует об успешной авторизации запросов ZAP.
Подобная настройка сессии значительно упрощает взаимодействие с инструментом, когда нам требуется аутентификация на основе заголовка, избавляя от необходимости использовать дополнительные скрипты.
Подводя итог, хотелось бы зафиксировать возможности, которые предоставляет данный Add-on на сегодняшний день:
-
поддержка идентификации и конфигурации запроса авторизации (версия 0.1.0, вышла 17.01.2023);
-
поддержка управления сессией на основе заголовков (версия 0.2.0 вышла 08.02.2023);
-
поддержка аутентификации на основе браузера (версия 0.3.0 вышла 13.03.2023).
Подробнее об этом плагине можно прочитать тут:
Header Based Session Management
Создатели заметки: Алмаз Вахитов, Мария Ковтун.
ссылка на оригинал статьи https://habr.com/ru/articles/730096/
Добавить комментарий