Сегодня почти у каждой организации есть собственный веб-сайт. Вместе с ростом интернета возрастают и атаки на веб-сайты, становясь все более серьезнее и масштабнее. Однако существует обширный список инструментов, которые могут производить сканирование и находить уязвимости в веб-приложениях. Одним из таких инструментов является сканер уязвимостей под названием 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 включает в себя специальные поисковые роботы (краулеры), которые выполняют идентификацию уязвимостей. Прокси-сервер располагается между браузером пользователя и конечным веб-приложением. Схема работы изображена ниже.
Обзор основных функций графического интерфейса OWASP ZAP
После запуска программы отображается главное окно, в котором находятся следующие основные параметры:
1) Режимы сканирования
В OWASP ZAP существуют 4 режима сканирования:
Standard Mode — обычное сканирование;
Safe Mode — безопасное сканирование, позволяющее выполнять только те действия, которые не смогут навредить системе. В этом режиме не используются атаки на целевой сайт;
Protected Mode — защищенное сканирование, позволяющее имитировать потенциально опасные уязвимости;
ATTACK Mode — режим атаки, позволяющий, помимо сканирования, также выполнять атаки на потенциальный сайт/приложение.
2) Сайты
Здесь отображаются сайты, которые сканируются в данный момент или уже были просканированы. Также в данном разделе отображается полная структура сайта.
3) Раздел со сканированием
Основной раздел, в котором запускается сканирование сайта.
4) Результаты
Раздел с результатами располагается внизу и подразделяется на вкладки History, Search, Alerts, Output.
History — отображает список всех запросов в том порядке, в котором они были отправлены;
Search — позволяет производить поиск при помощи регулярных выражений в URL-адресах, запросах, ответах, заголовках;
Alerts — отображает найденные уязвимости в сканированном веб-сайте. Уязвимости разбиты на категории. Каждой найденной уязвимости присваивается степень критичности. Описание данного раздела будет рассмотрено далее;
Output — отображает различные информационные сообщения. Например, трассировку стека, ошибки и другую отладочную информацию.
Плагины
OWASP ZAP поддерживает установку сторонних плагинов, благодаря чему можно существенно расширить функциональность программы. Для перехода в раздел Плагины необходимо щелкнуть по значку с названием Manage Add-ons:
В открывшемся окне будет два раздела — Installed и Marketplace. В разделе Installed отображается список всех установленных плагинов в системе.
В разделе Marketplace можно находить плагины и устанавливать их.
Если щелкнуть по плагину, то внизу отобразится его имя, статус, версия и описание. Также предусмотрены ссылки на документацию к плагину и на его исходный код на сайте GitHub. Плагины разрабатывает команда OWASP и энтузиасты. У всех плагинов открытый исходный код, и они полностью бесплатны в использовании.
Также для просмотра и поиска необходимых плагинов можно перейти на официальный сайт в раздел плагины:
Сканирование веб-сайтов на наличие уязвимостей
Перейдем к процессу сканирования. В качестве теста возьмем сайт 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, будет обрабатывать легче. Работает медленнее, чем обычный паук.
Для того чтобы начать сканирование/атаку, необходимо нажать на кнопку Attack.
После этого начнется процесс сканирования. Сначала запускается «паук», который ищет все URL, имеющие отношение к сканирующему сайту. В столбце Method отображаются методы, которые используются для получения URL и их статусы (столбец Processed).
Как правило, используются методы GET и POST. Если статус 200, то отображается зеленый кружок, если статусы 404 или 500, то — красный. В зависимости от структуры сайта и его наполнения сканирование на URL может занять длительное время. После того как все URL найдены запускается активное сканирование.
Активное сканирование — сканирование, при котором осуществляется попытка найти потенциальные уязвимости, используя известные атаки.
Для просмотра атак, которые используются при активном сканировании, а также для просмотра их прогресс-статуса необходимо нажать на кнопку со значком мониторинга — Show scan progress details:
Название уязвимости отображено в столбце Analyser, прогресс сканирования отображается в столбце Progress. В столбце Elapsed выводится время, которое было затрачено на сканирование данной уязвимости.
В числе атак, которые использует ZAP, можно выделить такие атаки как SQL-инъекции, XSS (Cross-site-scripting), CRLF-инъекции и т.д. Также, помимо атак, происходит сбор информации, включающий в себя версии и названия используемых компонентов — такие как веб-сервер, СУБД.
Так же, как и с поиском ULR, процесс активного сканирования может занять долгое время.
Любую проверку можно пропустить, нажав на кнопку с синей стрелкой — Skip active scanner:
Все найденные уязвимости будут находиться в разделе Alerts. Уязвимости группируются по категориям:
С полным списком всех возможных уязвимостей, которые распознает и использует OWASP ZAP, а также их подробное описание можно найти в соответствующем разделе на официальном сайте ZAP.
Каждой группе уязвимостей присваивается уровень риска, который обозначается своей цветовой гаммой. В OWASP ZAP существует 5 таких категорий:
High — самый высокий (критический) уровень уязвимостей. Сюда относят SQL-инъекции, атаки типа path traversal, LDAP-инъекции, Spring4Shell и другие. Обозначается красным флажком.
Medium — средний уровень критичности найденных уязвимостей. Сюда относят Directory Browsing, HTTPOnly, XSLT-инъекции и другие. Обозначается оранжевым флажком.
Low — низкий уровень найденных уязвимостей. Сюда относят найденную информацию, связанную с отладкой, раскрытие частных IP-адресов (Private IP Disclosure) и другие. Обозначается жёлтым флажком.
Informational — информационный уровень, который сообщает о том, что найдена информация об используемых компонентах веб-сайта, а также о сервере. Сюда относят версии веб-сервера, СУБД, библиотек, фреймворков, а также версии языков программирования и операционных систем. Как правило, уязвимости, относящиеся к данной категории не могут напрямую навредить системе, однако повышают риск сбора информации о сайте и его компонентах. Обозначается синим флажком.
False Positive — ложные срабатывания. В редких случаях ZAP может найти уязвимость, которая не является уязвимостью. Если возникает сомнение, то программа помечает такую «уязвимость» зеленым флажком. Однако пользователь должен сам убедиться и проверить, является ли найденная уязвимость таковой или нет.
После того как сканирование было завершено, в разделе Alerts отобразятся все найденные проблемы безопасности. Если раскрыть группу уязвимости, то отобразятся все URL, в которых были найдены уязвимости данного типа:
Справа будет отображено полное описание, которые включает в себя тип атаки, риск, CWE номер, WASC номер, описание, а также способ устранения найденной уязвимости. Также отобразить всю подробную информацию можно в отдельном окне путем двойного щелчка левой кнопки мыши по уязвимости:
Если щелкнуть правой кнопкой мыши по уязвимости, то отобразится контекстное меню, в котором доступно большое количество опций, например, можно сразу перейти по URL, где найдена уязвимость (Open URL in Browser), сохранить страницу в формате XML (Save XML) или в «сыром» формате (Save Raw), удалить уязвимость из текущего списка сканирования (Delete) и другие опции:
Если уязвимое место найдено непосредственно в HTML коде или в коде JavaScript, то такой участок будет выделен, чтобы его можно было сразу опознать:
Также отображается HTTP/HTTPS заголовок и его параметры:
Убедимся, что на просканированном сайте действительно найдены уязвимости. В качестве примера возьмем две атаки — SQL-инъекцию и XSS.
В разделе Alerts необходимо раскрыть группу под названием SQL Injection и перейти по найденной ссылке:
Далее необходимо изменить строку с параметром на другой символ, например на символ одинарной кавычки. URL выглядит так — http://testphp.vulnweb.com/listproducts.php?artist=3+AND+1%3D1+—+
Удаляем все, что написано после символа равно. В данном случае меняем параметр 3+AND+1%3D1+—+ на символ ‘ и переходим по новой ссылке:
Как можно увидеть, появилось сообщение об ошибке в SQL синтаксисе, благодаря которому на данном сайте возможно произвести SQL-инъекцию.
Далее проверим, можно ли произвести XSS атаку. Для этого необходимо раскрыть группу с названием Cross Site Scripting и перейти по ссылке, где была найдена эта уязвимость:
В этом разделе сайта присутствует поле для ввода текста:
Введем в него JavaScript код:
<script>alert("Test!")</script>
Как можно увидеть, сайт принял введенный JavaScript код и отобразил диалоговое окно с текстом Test!
Создание отчета
OWASP ZAP позволяет генерировать отчеты по результатам сканирования. Для того чтобы создать отчет, необходимо перейти в раздел Report, далее выбрать Generate Report:
В открывшемся окне будет предложено изменить отчет перед его созданием. В разделе Scope можно задать базовые настройки — Заголовок отчета (Report Title), имя отчета (Report Name), путь, куда будет сохранен отчет (Report Directory):
В разделе Template можно выбрать один из предложенных шаблонов для сохранения отчета. Каждый шаблон оформлен по-особенному. В качестве примера сгенерируем отчет при помощи шаблона High Level Report Sample, в котором найденные уязвимости будут отображены в виде круговой диаграммы:
В разделе Filter можно выбрать, какие группы рисков стоит включить или исключить из отчета:
После того как все параметры для генерации заданы, необходимо нажать на кнопку Generate Report. После этого отчет будет сохранен по ранее заданному пути, а также будет открыт автоматически в браузере пользователя:
Подводя итог, можно сказать, что сканер OWASP ZAP является отличным, бесплатным решением для поиска уязвимостей на сайтах и в веб-приложениях. Функциональность программы можно расширить при помощи плагинов. Также имеется обширная документация и подробное описание всех используемых уязвимостей.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
Приветствую тебя, на моей первой статье по циклу автоматизации OWASP ZAP и по совместительству на первой статье на форуме.
Вступление
Данная статья больше вступительная, рабочая информация начнется со второй части.
По данной теме планирую выпустить цикл статей, по мере того, как сам буду проходить те или иные этапы автоматизации. Буду эгоистичным, и скажу, что весь цикл больше предназначен для меня, чтобы структурировать полученные знания и навыки, сохранить их еще где-то, кроме поспешных записок в блокноте ну и поделиться граблями и советами, чтобы у последователей все протекло более гладко.
Какие-то части будут выходить быстро, какие-то долго, все зависит от того, прошел я данный этап или нет, и на сколько тяжело он мне дается. Также буду делиться скриптами и прочими наработками, но не всеми и некоторые вещи я не могу опубликовать, а для переписывания скриптов на тестовые среды не очень обладаю временными ресурсами, но постараюсь максимально помочь.
Стоит понимать, что автоматизированное тестирование ни в коем случае не заменяет ручные тесты. Но и ручные тесты при этом очень помогают при автоматизации (например при описании специфических правил сканирования, или последовательности шагов, чтобы подтвердить или опровергнуть багу).
Цели
Весь цикл направлен на то, чтобы автоматизировать проверку на уязвимости до выкладки кода на продуктовые сервера. В ИТ среде это называется внедрить DAST (Dinamic Application Security Testing) в DevOps pipeline. Причем целью служит не включить и забыть, а именно постепенное повышение качества тестирования и его покрытия. Внедрять различные инструменты и дополнительные фишки.
Итак, дано:
Предположим, что у нас уже отдел QA(тестировщики), что-то уже написали. У них через Jenkins либо что-то иное, по событию либо по расписанию, стартуют регрессионные тесты которые с помощью селениума и браузеров тестируют приложение на баги перед выпуском в релиз.
Целевая схема видится пока следующая:
Цель: затесаться к тестировщикам на регрессионные тесты, тем самым получив endpoints для дальнейшего сканирования. А также возможность самому по расписанию или вручную запускать DAST.(нижняя стрелочка).
Камни и почему именно пока такое решение:
При разработке по agile ключевым является скорость тестирования кода, и его поставка, важно ловить баланс между скоростью и качеством. Можно гонять DAST несколько дней, но будут при этом большие задержки доставки кода, особенно если речь про фиксы. Также можно вообще не гонять тесты, что является другой крайностью, и словить неприятные банальные ошибки как безопасности, так и функционирования приложения.
Поэтому было принято решение следующей схемы внедрения:
- После регрессии проводить только активное сканирование, без запуска пауков, фаззинга и больших накруток. Чтобы снизить задержку.
- Раз в неделю или пару раз в ночь проводить более детальные тесты. И найденные баги отправлять на доработку разрабам с различными приоритетами.
- Все критические баги уходят на немедленную доработку, остальные в технический долг(бэклог).
Из описанных выше шагов, видно, что необходимо будет прикручивать со стороны какой-то багтрэкер и каналы оповещения. В рамках проекта, планирую рассмотреть REDMINE и SLACK.
Описанная выше схема может измениться, где-то добавиться глубина сканирования, а где-то уменьшится, в зависимости от времени затрачиваемого на анализ. Если вы будете применять на своем продукте, то Вам самим принимать решения. По совету, лучше это обсудить с командами.
Об OWASP ZAP
Итак, почему был выбран именно OWASP ZAP? Все просто, у него хорошее api и его описание. Они первые, кто начал внедряться в DevOps. Есть плагины и множетво модулей(в нашем случае под Python). Достаточно отзывчивое комюнити.
Недостатков тоже полно. Например не совсем юзабилити по сравнению с burp, у него какая-то своя отдельная философия.
В ZAP можно писать скрипты расширения его функционировая, причем порой достаточно простыми способами, например через ZEST язык. Данные скрипты позволяют делать очень многое, прорабатывать поиски детальных багов приложения, как пример когда создается объект(пэйлоад) на одной странице, а обрабатывается пэйлоад на нескольких других страницах, следить за аномалиями и т.д.
В идеале конечно после ZAP надо внедрять и другие сканеры (Burp, w3af и т.д.) для большего покрытия и повышения шансов найти уязвимость. В данной части я хотел еще рассказать про его концепции и основные понятия, но видимо это будет описываться в следующих частях по мере работы с ними.
Необходимые навыки/знания
Для полного погружения в тему необходимо обладать, и/или желание погрузиться в следующие темы:
- знание основ пентеста веб-приложений
- чтение на английском
- базовые знания python
- немого знаний Docker
- представление о том, как строится разработка приложений
Это возможно не полный список, и что-то выпало, но дорогу осилит идущий. Сам со всем углубляюсь, освежаю память и т.д. в ходе реализации проекта. Также забегая вперед, скажу что надо будет ознакомиться с таким понятием как ZEST скрипты. И если ты, читатель, обладаешь знаниями JS, то zap со скриптами на JS работает из коробки.
Что дальше?
В следующей части от размышлений, мы перейдем к практике, и я расскажу как развернуть zap на docker. В каких режимах он может там функционировать, какие образы есть. И самое главное грабли, на которые я наступил.
Сегодня защита веб-приложения имеет решающее значение, поэтому осваивать пентест инструменты приходится и самим разработчикам. О мощном фреймворке WPScan для пентеста WordPress мы уже писали, но сайты бывают и на других движках. Именно поэтому сегодня разберем более универсальный пентест-инструмент OWASP ZAP (Zed Attack Proxy).
Что такое OWASP ZAP?
OWASP (Open Web Application Security Project) — всемирная некоммерческая организация, деятельность которой направлена на повышение безопасности ПО.
OWASP ZAP (Zed Attack Proxy) — один из самых популярных в мире инструментов безопасности. Это часть сообщества OWASP, а значит, что этот инструмент абсолютно бесплатный.
Почему многие выбирают OWASP ZAP?
Он предназначен для пользователей с широким спектром опыта в области безопасности, поэтому отлично подходит для разработчиков и функциональных тестировщиков, которые плохо знакомы с пентестами.
ZAP создает прокси-сервер между клиентом и вашим сайтом. Пока вы перемещаетесь по своему веб-сайту, он фиксирует все действия, а затем атакует сайт известными методами.
Открытый исходный код!
Проект был запущен в 2010 году, но до сих пор дорабатывается и регулярно обновляется.
Настройка среды ZAP
ZAP является кроссплатформенным и для своей работы требует только наличия JAVA 8+. Поэтому можно обойтись без Kali Linux или других ОС для белого хакинга.
Запуск OWASP ZAP
При запуске ZAP предложит сохранить сеанс. Если мы хотим получить конфигурацию своего веб-сайта или результаты тестирования позже, тогда следует сохранить сеанс, а пока можно выбрать значение: «No,I do not want to persist the session…».
В чем разница между активным и пассивным сканированием?
Что такое пассивное сканирование?
С точки зрения теста на проникновение, пассивное сканирование — это безобидный тест, который ищет только ответы и проверяет их на наличие известных уязвимостей. Пассивное сканирование не изменяет данные сайта, что делает его более безопасным.
Что такое активное сканирование?
Активное сканирование атакует веб-сайт различными известными методами. Активное сканирование может изменять данные и вставлять вредоносные скрипты. Поэтому лучше таким образом тестировать сайты, которые развернуты на локальном хосте, как мы уже делали с нашей пентест лабораторией WordPress.
Введение в ZAP UI
Давайте кратко рассмотрим макет пользовательского интерфейса ZAP, чтобы понять основы. На следующем экране перечислены окна с 4мя разделами.
1. Режимы
В верхнем левом углу экрана видны режимы, которых всего 4:
- Стандартный режим: позволяет делать что угодно с любым веб-сайтом.
- Режим атаки: активно проверяет любые веб-сайты.
- Безопасный режим: отключает все вредоносные функции во время сканирования.
- Защищенный режим: позволяет сканировать веб-сайты в определенной области. Это предотвращает сканирование нежелательных сайтов.
2. Сайты
Здесь будут перечислены все сайты, к которым мы получаем доступ через ZAP.
2.1 — Показывать только URL-адреса. Желательно включить эту опцию, так как после первых тестов данный раздел будет сильно засорен. Чтобы сфокусироваться на целевом веб-сайте необходимо поставить на него флаг «In Scope».
3. Окно рабочей области
Окно рабочей области состоит из 3 вкладок:
3.1 — Окно быстрого запуска. Это самый быстрый и прямой способ начать активное сканирование. Введите адрес целевого веб-сайта и нажмите кнопку атаки. Сначала он краулит веб-сайт, а затем выполняет активное сканирование.
3.2 — Окно запроса и ответа. Это наиболее часто используемые части пользовательского интерфейса. На вкладке запроса вы видите, что окно разделено на 2 части:
- Верхний показывает заголовок запроса и файлы cookie
- Нижний показывает параметры сообщения отправленного на сервер
Окно ответа аналогично окну запроса и показывает:
- Заголовок
- Тело ответа
4. Нижнее окно
Нижнее окно показывает:
- Результаты
- Историю запросов
- Уязвимости теста
Самая важная вкладка здесь — вкладка «Alerts».
4.1 — Вкладка «Alerts». Показывает уязвимости, обнаруженные на целевом веб-сайте. Когда мы щелкаем по одному из предупреждений в списке, открывается соответствующий запрос/ответ в правом верхнем углу и выводится точная информация об уязвимости.
Давайте посмотрим, что произошло на предыдущем изображении.
Запрос POST выполняется по адресу http://localhost:22742/api/TokenAuth/Authenticate. Пользователь входит в систему с учетными данными и сервер возвращает ошибку http-500.
HTTP-500 Internal Server Error.
OWASP ZAP считает, что это проблема. И в 3-м окне вы увидите некоторую информацию о ней. Он показывает точный URL и желтый флаг (средний риск). В описании говорится:
Эта страница содержит сообщение об ошибке/предупреждении, которое может раскрывать конфиденциальную информацию, такую как расположение файла, вызвавшего необработанное исключение. Эта информация может быть использована для дальнейших атак на веб-приложение. Предупреждение может быть ложным, если сообщение об ошибке находится на странице документации.
Это круто, потому что OWASP ZAP чувствует некоторую утечку информации. Он подозревает, что веб-сайт выдает необработанное исключение.
Это может быть действительно уязвимым, когда веб-сайт показывает злоумышленнику некоторый стек исключений и предоставляет информацию о среде или коде. Но в нашем примере ответ представляет собой содержимое JSON, в котором говорится «Invalid user name or password», но разработчик предпочитает отправлять его через HTTP-500. Это ложное срабатывание, поскольку никакая информация не раскрывается.
В разделе решения содержится информация о том, как решить проблему.
Проксирование вашего сайта: JxBrowser
В более ранней версии OWASP ZAP приходилось настраивать прокси-сервер вашего браузера для захвата запросов, но сейчас есть полезная функция JxBrowser! Это браузер на основе Chromium, интегрированный в OWASP ZAP. По умолчанию в нем настроена вся конфигурация прокси, что позволяет OWASP ZAP пропускать через него весь трафик. Нажмите «Launch Browser» и перейдите на свой веб-сайт.
Навигация по сайту
Чтобы извлечь дерево веб-сайта необходимо просканировать его в JxBrowser. Нужно поразить все функции и пройти все возможные действия. Данный этап очень важен!
Краулинг сайта
Краулинг сайта означает сканирование всех ссылок и получение структуры веб-сайта. О других краулерах мы уже писали ранее.
Зачем нам краулинг?
Краулинг нужен лишь в тех случаях, когда получить ко всему доступ только с помощью навигации не удалось. Он может обнаружить моменты, которые были упущены, а также когда проксирование невозможно.
Для его запуска щелкните правой кнопкой мыши на сайт и выберите в меню «Attack», а затем нажмите «Spider». Убедитесь, что напротив пункта «recurse» стоит флажок! Нажмите кнопку «Start Scan». Это займет некоторое время в зависимости от количества ссылок на вашем сайте.
Как протестировать SPA (приложение одной страницы)?
Если это веб-сайт SPA, тогда необходимо дополнительно указать, что параметры представляют структуру, а не данные приложения.
Если охватить все функции и действия своего SPA-сайта, то не нужно будет краулить его.
Расширения
Owasp добавило площадку расширений, ознакомиться со списком которых можно с помощью значка 3х цветного прямоугольника. Чтобы установить расширение, щелкните вкладку Marketplace и введите имя расширения в поле. Затем нажмите кнопку «Install Selected». Перезагружать ZAP не нужно.
Несколько полезных расширений:
- Active Scanner rules
- Passive Scanner rules
- FuzzDB
Настройки сканирования
Рекомендуем использовать следующие настройки сканирования. В меню «Analyse» выберите «Scan Policy Manager». Нажмите кнопку «Modify». В окне «Scan Policy» установите «Low» => «Threshold To All» и нажмите кнопку «Go». То же, как и с Insane => Strength To All и нажмите кнопку Go. Все атаки будут сохранены в памяти, а сканирование будет более надежным. Для сохранения настроек нажимаем кнопку Ок.
Старт атаки
Атака на целевой сайт очень проста.
1 — Добавьте свой сайт в контекст. Для этого щелкните правой кнопкой мыши целевой веб-сайт на левой панели. Выберите:
- «Include in Context»
- «Default Context»
Теперь вы видите, что во всплывающем окне появляется новый URL-адрес веб-сайта, который добавляет ваш веб-сайт как регулярное выражение. Звездочка (*) в URL-адресе означает атаку на все URL-адреса этого веб-сайта. Наконец, жмем кнопку ОК.
2 — Показать только URL-адреса в текущей области. Таким образом мы скрываем другие веб-сайты и предотвращаем случайные атаки.
3 — Запускаем краулинг.
4 — Атака! Это главная цель. Запустим активное сканирование.
Кнопка «Start Scan» запустит процесс, который может занять много времени (в зависимости от количества URL-адресов).
Фаззинг
Фаззинг — это отправка неожиданных или случайных данных на входы веб-сайта. Обычно мы проверяем вводимые данные на стороне клиента, поэтому игнорируем некоторые проблемы в серверной части. Когда вводятся нечеткие ключевые данные (например, основной поисковый ввод на веб-сайте или входные данные на странице входа), можно увидеть ошибки кодирования и лазейки в безопасности. Это необязательный шаг безопасности.
Если вы хотите запустить фаззер, тогда в левой части панели найдите запрос, который хотите обработать. Щелкните правой кнопкой мыши и выберите «Attack», затем нажмите «Fuzz». В окне фаззера будут видны данные для публикации запроса. Нажмем на них и выделим текст, который желаем атаковать. На правой панели нажмите кнопку «Add». Вы увидите окно Payloads. Снова нажмите кнопку «Add». В окне «Add Payload» выберите «File Fuzzers» в поле со списком типов. Выберите файл, который хотите использовать. Этот файл представляет собой базу данных, которая будет использоваться для брутфорса. Брутфорсить сайты на WordPress можно другими методами, о которых мы уже писали ранее.
Когда процесс брутфорса закончится, результаты будут перечислены на нижней вкладке под названием Fuzzer. Те, которые помечены как Fuzzed, требуют особого внимания.
Принудительный просмотр
Краулер ищет известные URL-адреса с органическими ссылками, но он не может найти URL-адрес, который нигде не упоминается на сайте. В этом случае на помощь приходит принудительный просмотр, который использует брутфорс словари, чтобы проверить, есть ли какие-либо другие скрытые URL-адреса, такие как панель администратора или что-то, что можно взломать.
Break
Break — очень хорошая функция для перехвата и изменения запросов и ответов. Если вы хотите изменить какие-либо данные публикации запроса или данные ответа, щелкните на сайт правой кнопкой мыши, выберите «Break», в окне «Add Break Point» нажмите «Save». Теперь на нижней панели будет видно, что точка останова включена.
Отныне все запросы будут перехватываться инструментом OWASP ZAP. Всякий раз, когда вы делаете запрос с исходного веб-сайта, окно ZAP выводится на передний план и позволяет вам изменить запрос. После того, как вы нажмете зеленую кнопку воспроизведения на панели инструментов, ZAP выдаст вам отправленный сервером ответ. Этот ответ также можно изменить. Таким образом, ваш браузер получит измененный ответ.
Результаты и отчет
Мы хорошо просканировали сайт на предмет известных уязвимостей и пришло время ознакомиться с результатами.
Увидеть проблемы можно на вкладке «Alerts», расположенной в нижней панели. На следующем экране представлены 5 предупреждений с цветными флажками. Если нет красного флага, тогда вам повезло. Если красные флажки есть, тогда в первую очередь необходимо поработать над их устранением.
Если никаких предупреждений не видно, возможно, что-то было сделано не так.
Когда вы щелкаете одно из предупреждений, отображается соответствующее окно запроса и ответа. Есть хороший инструмент для создания отчетов, который автоматически создает удобный файл отчета. Можно экспортировать отчеты в форматах:
- HTML
- XML
- JSON
- Markdown
В качестве примера выберем HTML.
Как видите, это хорошо организованный итоговый отчет, который в исходном виде можно отправлять любому коллеге.
Первое, что мы должны указать, это то, что OWASP ZAP не является коммерческим инструментом, он полностью бесплатен и имеет открытый исходный код, кроме того, это мультиплатформенный инструмент, совместимый с Windows операционные системы (32 и 64 бит), Linux, MacOS и даже Мы можем загрузить контейнер Docker, который будет включать все необходимое для его правильной работы. Эту программу очень легко установить, нам нужно будет только установить Java на нашем компьютере, чтобы иметь возможность запускать ее, другие характеристики заключаются в том, что этот инструмент переведен на более чем 12 языков, включая испанский, кроме того, благодаря сообществу у нас есть много документации, справочных руководств, а также есть форумы, на которых мы можем рассказать о нашей проблеме и помочь нам решить ее.
Пользователи этого инструмента судебной экспертизы безопасности смогут проводить аудит различных веб-приложений с помощью ряда конкретных функций и анализов. Мы сможем проверять все запросы и ответы между клиентом и сервером, настраивая прокси, который будет отвечать за сбор всех запросов для дальнейшего изучения. Мы также можем размещать ресурсы на сервере, выполнять автоматический анализ, пассивный анализ, возможность одновременного запуска нескольких атак и даже использовать динамические SSL-сертификаты. Другими интересными особенностями являются то, что он позволяет использовать смарт-карты, такие как DNIe, и даже личные сертификаты, он также способен работать с системами аутентификации, и у нас есть магазин расширений (плагинов) для дальнейшего увеличения функциональности этого замечательного инструмента. .
ZAP в настоящее время находится в версии 2.10, и они включают большое количество новых функций, таких как новые режимы атаки для поиска уязвимостей, улучшения в системе инъекций для одновременной атаки на несколько серверов, системы политик для выбора различных правил, которые будут формироваться. часть анализа, диалоговые окна сканирования с расширенными параметрами, новые плагины для контроля доступа и последовательность сканирования, чтобы точно настроить, как мы хотим, чтобы атака и проверка уязвимости проводились, и многое другое.
На Официальный сайт OWASP ZAP вы можете найти ссылки для его загрузки как для Windows, Linux и macOS, так и для контейнеров Docker, которые уже включают все необходимое для его правильной работы.
Установка и ввод в эксплуатацию
Установка этой программы действительно проста, нам просто нужно будет следовать указаниям мастера установки, выбирать, хотим ли мы стандартную или выборочную установку, затем мы можем выбрать каталог, в который нужно установить всю программу, и затем запустить ее.
Мы также можем выбрать создание папки в меню «Пуск», создание значков на рабочем столе и даже быстрый доступ. Наконец, OWASP ZAP позволит нам проверять наличие обновлений как для самого ZAP, так и для надстроек, которые мы можем установить. Кроме того, мы также можем установить новые правила, созданные для веб-сканеров и т. Д.
После установки мы можем запустить его, чтобы начать сканирование веб-серверов и проверить наличие известных недостатков безопасности.
Проверьте уязвимости своего веб-сервера
Первое, что нам нужно сделать, это запустить эту программу, она правильно загрузится через несколько секунд.
После запуска мы можем настроить сеанс ZAP для последующего сохранения всего проекта и данных, которые мы взяли с аудитом безопасности, на веб-сервер. У нас будет всего три варианта, хотя испанский перевод не очень хорошо сделан, он довольно хорошо понят.
В главном меню у нас будет возможность выполнить автоматическое сканирование или ручное сканирование, если мы заранее определили, что мы хотим. Мы также можем получить прямой доступ к справке инструмента.
Если мы нажмем «Автоматическое сканирование», мы сможем выполнить автоматическое сканирование URL-адреса, который нам нужен, мы можем направить любой URL-адрес для атаки, будь то с IP-адресом или доменом, очень важная деталь — нам потребуется разрешение чтобы выполнить аудит этого типа, и делайте это осторожно, потому что предупреждения о веб-атаках могут переходить в IDS / IPS, которые мы настроили, а также в mod_security нашего сервера Apache и т. д.
У нас будет возможность использовать традиционный паук или паук Ajax, кроме того, мы сможем использовать профили Chrome, Firefox среди прочего. После того, как мы все настроили, мы нажимаем «Атака», и он начинает сканировать весь веб-сервер, выполняя запросы GET и POST для обнаружения возможных уязвимостей в приложении.
В любой момент мы можем остановить эту атаку и проверить все, что вы проанализировали. Внизу находится вся информация. У нас будет возможность увидеть историю проведенных атак, чтобы проверить безопасность, и мы даже сможем атаковать ее снова и многие другие дополнительные параметры.
В нашем случае мы атаковали веб-сервер NAS-сервера QNAP, обновленного до последней версии. Мы сможем увидеть множество запросов GET и POST от самой службы HTTP / HTTPS. В левой нижней части мы увидим все имеющиеся у нас предупреждения, щелкнув каждое из них, мы сможем увидеть в правой части, какой тип уязвимости или ошибки мы обнаружили, а в верхней части мы увидим все в сыром виде.
В зависимости от того, что мы открываем в предупреждениях, мы увидим ту или иную информацию, было бы целесообразно просмотреть все эти предупреждения, которые дает нам OWASP ZAP, чтобы убедиться, что все правильно и нет никаких недостатков безопасности.
Паук также проделал свою работу с этим веб-сервером, делая запросы к веб-серверу, чтобы попытаться показать нам все файлы, которые существуют в нем, мы также можем увидеть файлы, которые не существуют или находятся вне досягаемости.
На следующем экране вы можете увидеть CSS-код веб-сервера, как вы можете видеть, мы найдем всю информацию, необходимую для оценки безопасности нашего веб-приложения, и если мы запретили доступ к различным частям.
Если мы нажмем «Отправленные сообщения», мы сможем увидеть все POST, которые мы сделали, с полученным кодом, RTT и множеством другой связанной информации.
В верхней части программы мы видим различные меню «Файл», «Редактировать», «Просмотр», «Анализировать», «Отчет», «Инструменты», «Импорт», «Онлайн» и «Справка». Эта программа действительно продвинута и дает нам большие возможности настройки.
В случае QNAP, когда он обнаруживает, что кто-то пытается выполнить неудачный вход несколько раз, он автоматически помещает нас в черный список, поэтому мы должны учитывать защиту веб-сервера, либо L7 брандмауэр которые мы настроили, IDS / IPS, которые будут обнаруживать аномальный трафик и т. д.
Как вы видели, OWASP ZAP — это очень продвинутый инструмент для проверки безопасности нашего сервера и веб-приложения, поэтому важно, чтобы при разработке веб-приложения мы проводили аудит безопасности, чтобы убедиться, что все правильно и есть нет ошибок в безопасности, которыми можно было бы воспользоваться.
OWASP ZAP (Zed Attack Proxy) — это многоцелевой инструмент сканирования, который помогает пентестерам и охотникам за багами уязвимости в веб-приложениях. Он снабжен прокси, активными и пассивными сканерами уязвимостей, фаззером, спайдером, отправителем HTTP-запросов и многим другим. В этом подробном руководстве я покажу, как использовать OWASP ZAP на Kali Linux.
Еще по теме: Взлом веб-приложения с помощью брута Burp Suite
Запуск и обновление OWASP ZAP
Прежде всего нужно запустить ZAP на Kali Linux и и обновить его. Сделать это можно различными способами, с помощью меню приложения Kali Linux —> Web Application Analysis (Анализ веб-приложений) —> ZAP, или найти в меню, как показано на скрине.
После запуска появиться главное окно ZAP:
Нажмите CTRL+U и обновите все надстройки, нажав Update All (Обновить все). На следующем снимке экрана мы видим, что наша эта система уже все обновила.
Иногда на некоторых ноутбуках экран обновления занимает весь экран, и не видна кнопка Update All. В таком случае просто уменьшите окно.
После завершения обновления необходимо настроить прокси в браузере.
Настройка прокси ZAP в браузере Firefox
Это очень похоже на настройку прокси для Burp и WebScarab. Нужно открыть браузер (в Kali Linux по умолчанию установлен браузер Firefox). В Firefox открыть меню и перейти к настройкам. На вкладке General (Общие) спуститесь вниз и в разделе Network Settings (Настройки сети), зайдите в Settings (Настройки).
Откроется новое окно, в котором нужно установить прокси. Отметье Manual proxy configuration (Ручная настройка прокси) и в поле HTTP-прокси, введите IP-адрес
127.0.0.1 и порт
8080.
Вы установили прокси в браузере Firefox.
Для быстрого переключения Proxy можно использовать расширение FoxyProxy.
Теперь, если зайти на сайт вы увидите предупреждение системы безопасности браузера. Нажмите на Advanced (Дополнительно).
Нажмите на Accept risk and continue (Принять риск и продолжить), после чего сертификат для ZAP будет добавлен для этого сайта.
Поиск файлов и папок с помощью ZAP
Установив ZAP в качестве прокси, можно приступить к сканированию сайта / веб-приложения.
Откройте сайт в браузере, и ZAP отреагирует на это действие, отобразив имя хоста на верхней левой панели. Кликните правой кнопкой мыши по имени хоста и выберите Attack (Атака) —> Forced Browse Directory (Принудительный просмотр каталога).
OWASP ZAP, используя словарь для по умолчанию, запустит перечисление каталогов.
Если хотите использовать другой словарь для брута (эта атака является брутом), зайдите в Instruments (Инструменты) —> Parametrs (Параметры) и на вкладкe Forced Browse (Принудительный просмотр), нажав на Select File, выберите словарь.
Создание копии сайта с помощью ZAP Spider
За создание копии сайта на жеском диски, отвечает ZAP Spider.
Кликните правой кнопкой мыши и выберите Atack (Атака) —> Spider (Паук).
После этого откроется следующее окно.
Нажмите на кнопку Start Scan (Начать сканирование). После запуска вы увидите процесс в нижней панели ZAP.
На верхней левой панели ZAP можно видеть структуру целевого сайта, методы запроса (GET/POST). Если кликнуть по строке, будет отображена подробная информация о запросе.
С правой стороны показан полный запрос, включая параметры, используемые ZAP.
Как работает паук в ZAP
Как и любой другой поисковый робот, паук ZAP переходит по каждой ссылке, которую он находит на на сайте. Кроме того, паук ZAP отслеживает ответы формы, перенаправления и URL-адреса, включенные в файлы robots.txt и sitemap.xml. Затем он сохраняет все запросы и ответы для последующего анализа и использования.
После сканирования сайта / веб-приложения можно использовать сохраненные запросы для выполнения некоторых тестов. ZAP позволяет делать следующее:
- Повторить запросы, которые изменяют некоторые данные.
- Выполнить активное и пассивное сканирование уязвимостей.
- Обработать входные переменные в поиске возможных векторов атаки.
- Воспроизвести определенные запросы в браузере.
Автоматический поиск уязвимостей с помощью ZAP
OSWAP ZAP — это инструмент, который помогает выполнять различные задачи, одна из которых — автоматическое сканирование целевого сайта.
Чтобы использовать эту функцию, нужно вручную установить прокси-сервер в браузере и открыть целевой сайт (как мы это делали ранее).
На вкладке Sites (Сайты), кликаем правой кнопкой мыши по сайту и выпадающем меню, выбираем Attack (Атака) —> Active Scan (Активное сканирование).
В появившемся окне, заполнить необходимую информацию.
После настройки, можно начать скарирование Start Scan.
Сканирование выявило 9 уязвимостей (вкладка Alerts🚩).
На уязвимом локальном сервере была найдена очень серьезная уязвимость.
Можно сохранить результат сканирования в формате CSV, HTML или XML.
Простое автоматическое сканирование на наличие уязвимостей
Если вы новичок в информационной безопасности, тогда просто откройте ZAP и запустите автоматическое сканирование Automated Scan. Появившемся всплывающее окне, введите целевой урл и нажмите⚡Attack (Атака).
После завершения, вы увидите отчет о найденных уязвимострях.
На этом все. Теперь вы знаете, как использовать OWASP ZAP на Kali Linux. Этих знаний будет достаточно, для будущего, самостоятельного изучения Zed Attack Proxy.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Проверка сайта на уязвимости
- Топовые инструменты для поиска уязвимостей сайтов
- Инструменты которые использую в соревнованиях CTF