OWASP ZAP — поддержка Session Management на основе заголовков

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Все, кто связан со сферой 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.

Теперь OWASP ZAP умеет поддерживать сессию на основе заголовков посредством плагина Authentication Helper, который можно установить в магазине ZAP Marketplace:

Установка плагина Authentication Helper.
Установка плагина Authentication Helper.

Релиз плагина состоялся в январе 2023 года, и продолжается его активное развитие — на момент написания статьи актуальна версия 0.3.0. Отметим, что этот Add-on также позволяет автоматически определять тип аутентификации в приложении и сразу самостоятельно менять этот тип в Context-настройке. Посмотрим на практике, как осуществляется авторизация через JWT-токен в ZAP, используя для примера наше приложение Stingray.

При успешной авторизации в приложении нам возвращается access-токен, который также необходимо использовать при проведении ZAP-сканирований:

Тело ответа при успешной авторизации.
Тело ответа при успешной авторизации.

При настройке Context в пункте Session Management теперь доступно поле Header-based Session Management. Заполняется оно следующим образом:

Настройки по управлению сессией.
Настройки по управлению сессией.

           Объяснение. Так как для поддержки авторизованных запросов используется заголовок Authorization, укажем его в первом поле. Значение заголовка Authorization при запросах: Bearer <token>, соответственно поле Value заполняется этим же значением, а в фигурных скобках обозначается, какое значение из тела JSON нужно подставлять. Таким образом, мы получаем возможность быстро настроить авторизованные запросы к приложению через ZAP-сканирование:

Автоматические запросы для проверки авторизованного состояния сессии.
Автоматические запросы для проверки авторизованного состояния сессии.

После запуска Spider (выполняет кроулинг — обход сайта) мы видим во вкладке History, что запросы проверки авторизации возвращают 200 код, что свидетельствует об успешной авторизации запросов ZAP.

            Подобная настройка сессии значительно упрощает взаимодействие с инструментом, когда нам требуется аутентификация на основе заголовка, избавляя от необходимости использовать дополнительные скрипты.

            Подводя итог, хотелось бы зафиксировать возможности, которые предоставляет данный Add-on на сегодняшний день:
            — поддержка идентификации и конфигурации запроса авторизации (версия 0.1.0, вышла 17.01.2023);

            — поддержка управления сессией на основе заголовков (версия 0.2.0 вышла 08.02.2023);

            — поддержка аутентификации на основе браузера (версия 0.3.0 вышла 13.03.2023).

 

Подробнее об этом плагине можно прочитать тут:

https://www.zaproxy.org/docs/desktop/addons/authentication-helper/session-header/
https://www.zaproxy.org/docs/desktop/addons/authentication-helper/
https://www.zaproxy.org/blog/2023-01-19-authentication-help/

 Создатели заметки: Алмаз Вахитов, Мария Ковтун.

Источник: https://habr.com/ru/companies/swordfish_security/articles/730096/


Интересные статьи

Интересные статьи

Приветствую, дорогой читатель!Меня зовут Евгений, я занимаюсь развитием сетевой инфраструктуры в Домклик. Сегодняшняя статья будет охватывать только применение динамической маршрутизации на основе FRR...
Кривая эластичности – это то, как продажи зависят от цены.Чем меньше цена, тем больше продаж и наоборот.Кривая эластичности – это очень важная для бизнеса штука, так как она определяет то, какую ...
В апреле мы провели ежегодный митап Пиэмная, где делимся кейсами и полезными советами для менеджеров проектов. Смотрите свежие доклады, из которых узнаете: — Как на ...
Данная статья поможет вам создать свой первый Swift Package. Мы воспользуемся популярной C++ библиотекой для линейной алгебры Eigen, чтобы продемонстрировать, как можно о...
Рабочая группа rustup рада сообщить о выпуске новой версии, 1.20.0. Rustup — рекомендуемая утилита для установки Rust, языка программирования, позволяющего каждому создавать надёжное и эффективно...