Вопрос или проблема
Я пытаюсь настроить аутентифицированное сканирование для веб-приложения, скажем, admin.example.com. Аутентификация осуществляется другим сервисом login.example.com через JSON AJAX вызов. После успешной аутентификации login.example.com устанавливает два куки: JWT-токен доступа и токен обновления для всего домена *.example.com. Моя проблема в том, что если я включаю конечную точку login.example.com в контекст сканирования, ZAP начинает тестировать параметры JSON-запроса и блокирует тестового пользователя до того, как он сможет пройти аутентификацию. С другой стороны, если я исключаю login.example.com из сканера, то попыток аутентификации вообще не будет. Я хочу использовать login.example.com только для аутентификации с заданными учетными данными, без брутфорса, без подмены параметров, без магии, а затем сканировать admin.example.com с действующей сессией. Возможно ли как-то это настроить?
Настройте ZAP так, чтобы он понимал вашу аутентификацию, а затем исключите ваш URL для входа. Для получения более подробной информации о том, как ZAP может обрабатывать аутентификацию, смотрите https://www.zaproxy.org/docs/authentication/
Ответ или решение
Для того чтобы успешно выполнить аутентифицированное сканирование с использованием OWASP ZAP, не блокируя тестового пользователя, вам необходимо правильно настроить контекст и параметры аутентификации. Вот шаги, которые нужно выполнить:
-
Создание нового контекста:
- Откройте ZAP и перейдите в раздел "Контексты" (Contexts).
- Создайте новый контекст, который будет использоваться для вашего веб-приложения на
admin.example.com
.
-
Настройка аутентификации:
- В меню контекста выберите "Аутентификация" (Authentication).
- Задайте способ аутентификации: выберите "Пользовательская аутентификация" (Use a script) или "Форма аутентификации" (Form-based Authentication), в зависимости от требований вашего сервиса.
- Добавьте необходимый скрипт или настройте параметры формы для правильной аутентификации через
login.example.com
. Убедитесь, что в настройках указаны все параметры, которые отправляются в JSON AJAX-запросе.
-
Исключение URL для входа:
- Перейдите в настройки "Заключения" (Exclusions) контекста.
- Добавьте
login.example.com
в список исключений. Это предотвратит тестирование этого URL во время сканирования, что снизит риск блокировки учетной записи.
-
Настройка сканирования:
- В меню "Настройки" (Options) убедитесь, что включены необходимые плагины для работы с JSON и AJAX.
- Запустите сканирование только на
admin.example.com
с установленными параметрами аутентификации. Убедитесь, что сканер использует Cookies или заголовки, установленные после успешной аутентификации.
-
Проверка и анализ результатов:
- После завершения сканирования проверьте результаты и убедитесь, что все уязвимости отсканированы, а ваш тестовый пользователь не был заблокирован.
- В случае возникновения ошибок, просмотрите логи для устранения проблем с аутентификацией или настройками.
Таким образом, запланировав аутентификацию и исключив URL для входа из сканирования, вы сможете успешно выполнить тестирование вашего веб-приложения без риска блокировки учетной записи пользователя. Для получения дополнительной информации о настройке аутентификации в ZAP, вы можете обратиться к официальной документации.