[Информационная безопасность] Wapiti — анализ защищенности сайта своими силами

Автор Сообщение
news_bot ®

Стаж: 6 лет 2 месяца
Сообщений: 27286

Создавать темы news_bot ® написал(а)
15-Июл-2020 16:34


Сканирование сайта на уязвимости — необходимая мера, которая позволяет трезво оценить уровень его защищенности от внешних угроз, выполнить которое можно самостоятельно с помощью специализированно инструментария — сканеров уязвимостей.
Nikto, W3af (написан на Python 2.7, поддержка которого закончилась) или Arachni (с февраля более не поддерживается) — наиболее популярные решения, представленные в бесплатном сегменте. Разумеется, есть и другие, например, Wapiti, на котором мы решили остановимся.
Wapiti работает со следующими типами уязвимостей:
  • раскрытие файла (локальные и удаленные, fopen, readfile);
  • инъекции (PHP / JSP / ASP / SQL-инъекции и XPath-инъекции);
  • XSS (межсайтовый скриптинг) (отраженная и постоянная);
  • обнаружение и выполнение команд (eval (), system (), passtru () );
  • CRLF-инъекции (разделение ответов HTTP, фиксация сеанса);
  • XXE (XML внешняя сущность) внедрение;
  • SSRF (подделка запроса на стороне сервера);
  • использование известных потенциально опасных файлов (благодаря базе данных Nikto);
  • слабые конфигурации .htaccess, которые можно обойти;
  • наличие файлов резервных копий, раскрывающих конфиденциальную информацию (раскрытие исходного кода);
  • Shellshock;
  • открытые перенаправления;
  • нестандартные методы HTTP, которые могут быть разрешены (PUT).

Возможности:
  • поддержка прокси HTTP, HTTPS и SOCKS5;
  • аутентификация с помощью нескольких методов: Basic, Digest, Kerberos или NTLM;
  • возможность ограничить область сканирования (домен, папка, страница, URL-адрес);
  • автоматическое удаление одного из параметров в URL;
  • множественные меры предосторожности против бесконечных циклов сканирования (пример: ifor, ограничение значений для параметра);
  • возможность установки приоритета для изучения URL-адресов (даже если не находятся в области сканирования);
  • возможность исключить некоторые URL-адреса из сканирования и атак (например: URL logout);
  • импорт файлов cookie (получение их с помощью инструмента wapiti-getcookie);
  • возможность активировать / деактивировать проверку сертификатов SSL;
  • возможность извлечь URL из JavaScript (очень простой JS-интерпретатор);
  • взаимодействие с HTML5;
  • несколько вариантов управления поведением и ограничениями crawler’a;
  • установка максимального времени для процесса сканирования;
  • добавление некоторых настраиваемых HTTP-заголовков или настройка пользовательского User-Agent.

Дополнительные возможности:
  • создание отчетов об уязвимостях в различных форматах (HTML, XML, JSON, TXT);
  • приостановка и возобновление сканирования или атаки (механизм сеанса с использованием баз данных SQLite3);
  • подсветка в терминале для выделения уязвимости;
  • разные уровни логирования;
  • быстрый и простой способ активации / деактивации модулей атаки.

Установка
Актуальную версию Wapiti можно установить 2 способами:
  • cкачать исходник с официального сайта и запустить скрипт установки, предварительно установив Python3;
  • c помощью команды pip3 install wapiti3.

После этого Wapiti будет готов к работе.
Работа с инструментом
Для демонстрации работы Wapiti мы будем использовать специально подготовленный стенд sites.vulns.pentestit.ru (внутренний ресурс), содержащий различные уязвимости (Injection, XSS, LFI/RFI) и прочие недостатки веб-приложений.
Информация предоставлена исключительно в ознакомительных целях. Не нарушайте законодательство!
Базовая команда для запуска сканера:
# wapiti -u <target> <options>

При этом имеется довольно подробная справка с огромным количеством опций запуска, например:
--scope — область применения
Если вместе с URL для сканирования указать параметр scope, то можно регулировать область сканирования сайта, указав как отдельную страницу, так и все страницы, которые получится найти на сайте.
-s и -x — параметры добавления или удаления конкретных URL-адресов. Данные параметры полезны, когда необходимо добавить или удалить конкретный URL-адрес в процесса сканирования.
--skip — указанный параметр с этим ключом будет сканироваться, но не будет атаковаться. Полезно, если есть какие-то опасные параметры, которые лучше исключить при сканировании.
--verify-ssl — включение или отключение проверки сертификата.
Сканер Wapiti модульный. Однако, для запуска конкретных модулей, из числа тех, которые автоматически подключаются во время работы сканера, нужно использовать ключ -m и перечислять нужные через запятую. Если ключ не использовать, то будут по умолчанию работать все модули. В самом простом варианте выглядеть это будет следующим образом:
# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Данный пример использования означает, что мы будем использовать только модули SQL, XSS и XXE при сканировании цели. Помимо этого, можно фильтровать работу модулей в зависимости от нужного метода. Например -m “xss: get, blindsql: post, xxe: post”. В таком случае модуль xss будет применяться к запросам, передаваемым методом GET, а модуль blibdsql — к POST-запросам и т.д. Кстати, если какой-то модуль, который был включен в список, не потребовался во время сканирования или работает очень долго, то нажав комбинацию Ctrl+C можно пропустить использование текущего модуля, выбрав соответствующий пункт в интерактивном меню.
Wapiti поддерживает передачу запросов через прокси-сервер с помощью ключа -p и аутентификацию на целевом сайте через параметр -a. Также можно указать тип аутентификации: Basiс, Digest, Kerberos и NTLM. Для последних двух может потребоваться установка дополнительных модулей. Кроме того, можно вставлять в запросы любые заголовки (в том числе произвольный User-Agent) и многое другое.
Для использования аутентификации можно использовать инструмент wapiti-getcookie. C его помощью мы формируем cookie, которые Wapiti будет использовать при сканировании. Формирование cookie выполняется с помощью команды:
# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

В процессе работы в интерактивном режиме отвечаем на вопросы и указываем необходимую информацию типа: логин, пароль и прочее:

На выходе получаем файл в формате JSON. Другой вариант — добавить всю необходимую информацию через параметр -d:
# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Результат будет аналогичный:

При рассмотрении основного функционала сканера, конечным запросом для проведения тестирования веб-приложения в нашем случае стал:
# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

где среди прочих параметров:
-f и -o — формат и путь для сохранения отчета;
-m — подключение всех модулей — не рекомендуется, т.к. будет сказываться на времени тестирования и размере отчета;
--color — подсвечивать найденные уязвимости в зависимости от их критичности по версии самого Wapiti;
-c — использование файла с cookie, сгенерированного с помощью wapiti-getcookie;
--scope — выбор цели для атаки. Выбрав вариант folder будет сканироваться и атаковаться каждый URL, начиная с базового. Базовый URL должен иметь косую черту (без имени файла);
--flush-session — позволяет проводить повторное сканирование, при котором не будут учитываться предыдущие результаты;
-A — собственный User-Agent;
-p — адрес прокси-сервера, если необходим.
Немного об отчете
Результат сканирования представлен в виде подробного отчета по всем найденным уязвимостями в формате HTML-страницы, в понятном и удобном для восприятия виде. В отчете будут указаны категории и число найденных уязвимостей, их описание, запросы, команды для curl и советы о том, как их закрыть. Для удобства навигации в названия категорий будет добавляться ссылка, кликнув по которой можно перейти к ней:

Существенный минус отчета — отсутствие как таковой карты веб-приложения, без которой не будет понятно, все ли адреса и параметры были проанализированы. Также есть вероятность ложных срабатываний. В нашем случае в отчете фигурируют «файлы бэкапов» и «потенциально опасные файлы». Их количество не соответствует действительности, так как подобных файлов на сервере не было:

Возможно, некорректно работающие модули исправят со временем. Также недостатком отчета можно назвать отсутствие окраски найденных уязвимостей (в зависимости от их критичности), или хотя бы их разделения по категориям. Единственное, как мы можем косвенно понять о критичности найденной уязвимости — это применять параметр --color при сканировании и тогда найденные уязвимости будут окрашиваться различными цветами:

Но в самом отчете подобная окраска не предусмотрена.
Уязвимости
SQLi
Cканер частично справился с поиском SQLi. При поиске SQL-уязвимостей на страницах, где не требуется аутентификация, никаких проблем не возникает:

Не поучилось найти уязвимость на страницах, доступных только после аутентификации, даже с использованием валидных cookie, так как скорее всего после успешной аутентификации будет произведен "выход их сессии" и cookie станут недействительными. Если бы функция деавторизации была выполнена в виде отдельного скрипта, отвечающего за обработку этой процедуры, то можно было бы полностью исключить его через параметр -x, и тем самым предотвратить его срабатывание. В противном случае исключить его обработку не получится. Это проблема не конкретного модуля, а инструмента в целом, но из-за этого нюанса не удалось обнаружить несколько инъекций в закрытой области ресурса.
XSS
С заданной задачей сканер отлично справился и нашел все подготовленные уязвимости:

LFI/RFI
Сканер нашел все заложенные уязвимости:

В целом, несмотря на ложные срабатывания и пропуски уязвимостей, Wapiti, как бесплатный инструмент, показывает довольно неплохие результаты работы. В любом случае стоит признать, что сканер довольно мощный, гибкий и многофункциональный, а главное — бесплатный, поэтому имеет право на использование, помогая администраторам и разработчикам получать базовую информацию о состоянии защищенности веб-приложения.
Оставайтесь здоровыми и защищенными!
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_wapiti, #_web_scanner, #_web_security, #_informatsionnaja_bezopasnost (
Информационная безопасность
)
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 29-Апр 16:22
Часовой пояс: UTC + 5