Пентест вебсайта с помощью Owasp Zap

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


Сегодня защита веб-приложения имеет решающее значение, поэтому осваивать пентест инструменты приходится и самим разработчикам. О мощном фреймворке 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.



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


image

Источник: https://habr.com/ru/company/alexhost/blog/530110/


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

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

VeraCrypt — свободный форк TrueCrypt используемый для сквозного шифрования в Windows, Mac OSX и Linux, и позволяет шифровать системный диск, отдельный внутренний или внешний диск или ...
На сегодняшний день довольно быстро набирают популярность решения, направленные на контроль и защиту конечных устройств. Сегодня мы хотим показать вам одно из таких решен...
Эта публикация написана после неоднократных обращений как клиентов, так и (к горести моей) партнеров. Темы обращений были разные, но причиной в итоге оказывался один и тот же сценарий, реализу...
Toolkit начинающего пентестера: представляем краткий дайджест главных инструментов, которые пригодятся при пентесте внутренней сети. Эти инструменты уже активно используются широким кругом специа...
Реализация ORM в ядре D7 — очередная интересная, перспективная, но как обычно плохо документированная разработка от 1с-Битрикс :) Призвана она абстрагировать разработчика от механики работы с табл...