4.3. OWASP Zed Attack Proxy (ZAP)

 

Введение

В этом уроке рассмотрим более сложный сканер, который обладает гораздо большими возможностями по сканированию веб-приложений.

ZAP содержит множество утилит для взлома веб-сайтов, например фаззер, прокси-сервер, сканер. Кроме того, вы можете установить дополнительные плагины, которые добавят больше опций и возможностей для сканирования и выявления уязвимостей.

В этом уроке мы рассмотрим некоторые предустановленные автоматические сканнеры. К ним относят уже известный нами Spider, Ajax Spider, Passive scanner и Active Scan.

Spider, как мы уже знаем, используется для определения структуры сайта, переходя от одной ссылки к другой.

Ajax Spider выполняет ту же функцию, что и Spider, однако использует при этом Ajax запросы. Многие современные веб-приложения технологию Ajax для совершения асинхронных запросов на сервер. При этом сама страница не перезагружается, а новый контент подгружается автоматически. Например, когда вы листаете ленту на Facebook или VK, то новые посты подгружаются автоматически. Такой эффект достигается за счет Ajax.

Если сайт использует данную технологию, то Ajax Spider вам поможет обнаружить новые ссылки и уязвимости.

Passive scanner анализирует перехваченные страницы на наличие уязвимостей. Анализ происходит, когда вы используете ZAP в качестве прокси-сервера и в ручном режиме просматриваете страницы сайта.

Сканер не посылает специальные запросы на сервер, а просто прослушивает трафик и анализирует передаваемые данные. Обычно с помощью Passive scanner позволяет обнаружить отсутствие или присутствие определенных HTTP заголовков, их неправильную конфигурацию, анализирует комментарии и ошибки сервера.

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

В этом уроке мы просканируем приложение Juice Shop.

Самый быстрый способ начать сканирование – это открыть вкладку Quick Start, кликнуть на Automated Scan и ввести адрес сайта:

Панель быстрого старта сканирования сайта c ZAP

Однако я бы рекомендовал другой подход.

 

Изменение настроек

В первую очередь изменим настройки сканеров. Для этого перейдите по Tools --> Options или наберите Ctrl+Alt+O, после этого откроется окно с настройками для всех установленных опций:

Настройки ZAP

В Active Scan я бы рекомендовал изменить опции, влияющие на интенсивность сканирования:

Number of Hosts Scanned Concurrently – количество одновременно сканируемых хостов. Не рекомендуется увеличивать значение, так как это ведет к большей нагрузке компьютера, на котором установлен ZAP.

Concurrent Scanning Threads per Host – количество параллельных нитей сканирования. Служит для ускорения сканирования, но также сильно нагружает процессор и память. Рекомендую значение не больше 5.

Maximum Rule Duration – максимальное время (в минутах) сканирования для каждого скрипта или плагина. Можете установить минимальное значение (1 минута), чтобы процесс сканирования не слишком затянулся.

Delay When Scanning – задержки в ожидании сканирования для каждого запроса. Значения больше нуля увеличивают общее время сканирования, но в то же время снижают нагрузку на сканируемый объект.

Если ваш ZAP установлен на мощном компьютере, то можете изменить значения для увеличения скорости и интенсивности сканирования. Все остальные параметры можете оставить без изменения.

Аналогичным образом вы можете установить значения параметров для Ajax Spider и других сканеров. В целом для Kali, установленного на виртуальной платформе, предустановленные значения вполне приемлемые.

 

Исследование приложения и пассивное сканирование

Теперь приступим к ручному исследованию приложения. Для этого во вкладке Quick Start перейдите по Manual Explore. Затем откройте браузер, в котором будете исследовать приложение.

Приложение Juice Shop использует формы регистрации и входа на сайте. Кроме того, пользователи могут оставлять свой отзыв, переключать языки интерфейса и многое другое. Рекомендую пройтись по всем пунктам. Делается это для расширения зоны поиска уязвимостей. Залогинившимся пользователям доступны дополнительные опции и страницы, поэтому пассивный сканер может выявить имеющиеся уязвимости, а активный сканер может запустить серию тестов на этих страницах.

После того, как вы закончите исследование сайта, вернитесь к ZAP и в нижней панели переключитесь во вкладку Alerts:

Найденные уязвимости сайта

Здесь отображаются все найденные уязвимости. Каждая найденная уязвимость содержит краткое описание проблемы и список URL.

 

Spider/Ajax Spider

Следующим этапом будет сканирование структуры сайта сканерами Spider и Ajax Spider. Juice Shop активно использует технологию Ajax, поэтому Ajax Spider здесь просто необходим.

Перейдем в левую панель Sites и выберем исследуемый сайт. Затем правой кнопкой мыши откройте контекстное меню и кликнете на опцию Attack:

Сканеры ZAP

Для начала выберете опцию Spider. Дождитесь, когда сканер закончит свою работу и затем можете запускать Ajax Spider. Не рекомендую запускать одновременно оба сканера.

В правом нижнем углу отображается какие сканеры в данный момент активны:

Список активных сканеров

При наведении курсора мыши появляется всплывающая подсказка названия сканера.

 

Active Scan

После того, как все предыдущие процессы завершены, притупим к активному сканированию. Для этого в панели Site снова выберете URL и откройте контекстное меню. Затем перейдите по Attack --> Active Scan. В открывшемся окне поставьте галочку напротив Show Advanced Options:

Опции для Active Scan

Появятся дополнительные вкладки с настройками сканирования. Откройте вкладку Technology:

Выбранные технологии сканирования

Здесь вы можете выбрать только те серверные технологии, которые были обнаружены на этапе разведки и сбора информации о сайте. Тем самым вы снижаете нагрузку на тестируемый объект и уменьшаете время тестирования. Однако, если не уверены в конкретной технологии, то можете включить больше вариантов. 

Затем перейдите во вкладку Policy:

Политика сканирования ZAP

В ней отображаются настройки политики тестирования. По умолчанию здесь присутствует политика Default Policy, однако вы можете создать свою политику с индивидуальными настройками. Политика представлена 5 категориями, каждая из которых содержит списки тестируемых уязвимостей. Некоторые из них вы можете отключить.

Для управления настройками политики имеются 2 важных параметра, значения которых вы можете применить ко всей политике либо к отдельным категориями и подкатегориям.

Alert Threshold – параметр регулирует с какой вероятностью попадут в отчет те или иные уязвимости. Доступны 4 опции: Off, Low, Medium, High.

Off означает, что тестирование для выбранной категории отключено. Low – в отчет попадет большое количество уязвимостей, однако многие из них могут быть ложными. High – в отчет попадет меньше уязвимостей, однако они с большей вероятностью будут истинно положительными.

Attack Strength – интенсивность тестирования, где Low – низкая интенсивность, а Insane – самая высокая.

Для тестирования Juice Shop я бы рекомендовал использовать значение Low для параметра Attack Strength. Примените данное значение ко всей политике:

Выбранные настройки политики сканирования

Нажмите на Start Scan и процесс активного тестирования начнется. Весь процесс будет отображаться в нижней панели программы.

 

Отчет

Для генерации отчета на верхней панели перейдите по Report --> Generate Report. Откроется следующее окно:

Опции генерации отчета сканирования

Измените его название и имя файла по вашему усмотрению, а затем в поле Site выберете требуемый сайт. В поле Report Directory отображается папка, в которой сохранится файл отчета.

Во вкладке Template вы можете выбрать нужные формат и стиль отчета, а во вкладке Filter – отфильтровать уязвимости по уровню риска и вероятности истинности.

Затем нажмите на Generate Report.