Проверка Сайта На Уязвимости Самостоятельно С Помощью Wapiti



Проверка сайта на уязвимости самостоятельно с помощью Wapiti

В прошлом статья мы говорили о Немесида WAF Бесплатно — бесплатный инструмент для защиты веб-сайтов и API от хакерских атак, и в этом мы решили сделать обзор популярного сканера уязвимостей.

Вапити .

Сканирование сайта на наличие уязвимостей — необходимая мера, которая в сочетании с анализом исходного кода позволяет оценить уровень его защищенности от угроз компрометации.

Просканировать веб-ресурс можно с помощью специализированных инструментов.

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, которые можно обойти;

  • наличие резервных файлов, раскрывающих конфиденциальную информацию (раскрытие исходного кода);
  • Контузионный шок;
  • открытые редиректы;
  • нестандартные методы HTTP, которые можно разрешить (PUT).



Возможности:

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



Дополнительные возможности:

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



Монтаж

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



Работа с инструментом

Для демонстрации работы Wapiti мы будем использовать специально подготовленный стенд site.vulns.pentestit.ru (внутренний ресурс), содержащий различные уязвимости (Injection, XSS, LFI/RFI) и другие недостатки веб-приложений.

Информация предоставлена исключительно в ознакомительных целях.

Не нарушайте закон! Основная команда для запуска сканера:

  
  
  
  
   

# wapiti -u <target> <options>

При этом есть достаточно подробная справка с огромным количеством вариантов запуска, например: --объем - Область применения Если вы укажете параметр области вместе с URL-адресом сканирования, вы можете настроить область сканирования сайта, указав как одну страницу, так и все страницы, которые можно найти на сайте.

И -Икс — возможности добавления или удаления определенных URL-адресов.

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

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

Полезно, если есть какие-то опасные параметры, которые лучше исключить при сканировании.

--verify-ssl — включить или отключить проверку сертификата.

Сканер Wapiti является модульным.

Однако для запуска конкретных модулей, в том числе автоматически подключающихся во время работы сканера, необходимо использовать ключ -m и через запятую перечислить нужные.

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

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

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Этот пример использования означает, что при сканировании цели мы будем использовать только модули SQL, XSS и XXE. Кроме того, вы можете фильтровать работу модулей в зависимости от желаемого метода.

Например -m «xss: получить, слепой SQL: отправить, xxe: отправить» .

В этом случае модуль хсс будет применяться к запросам, отправленным с использованием метода GET, а модуль БлибдСкл - на POST-запросы и т.д. Кстати, если какой-то модуль, включенный в список, не понадобился при сканировании или занимает очень много времени, то нажатием комбинации Ctrl+C можно пропустить использование текущего модуля, выбрав соответствующий пункт интерактивного меню.

Wapiti поддерживает передачу запросов через прокси с использованием ключа.

-п и аутентификация на целевом сайте через параметр .

Вы также можете указать тип аутентификации: Базовый , Дайджест , Керберос И НТЛМ .

Последние два могут потребовать установки дополнительных модулей.

Кроме того, в запросы можно вставлять любые заголовки (в том числе произвольные).

Пользовательский агент ) и многое другое.

Чтобы использовать аутентификацию, вы можете использовать инструмент вапити-getcookie .

С его помощью формируем печенье , который Wapiti будет использовать при сканировании.

Формирование печенье сделал с помощью команды:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

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

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

Результатом является файл в формате JSON. Другой вариант — добавить всю необходимую информацию через параметр :

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

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

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

При рассмотрении основного функционала сканера окончательным запросом на тестирование веб-приложения в нашем случае было:

# 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://myproxy:3128

где среди прочих параметров: И — формат и путь сохранения отчета; — подключать все модули не рекомендуется, т.к.

это повлияет на время тестирования и размер отчета; --цвет — выделение найденных уязвимостей в зависимости от их критичности по данным самой Wapiti; - используя файл с печенье , созданный с использованием вапити-getcookie ; --объем — выбор цели для атаки.

Выбор варианта папка Каждый URL-адрес будет просканирован и атакован, начиная с базового.

Базовый URL-адрес должен содержать косую черту (без имени файла); --flush-session — допускает повторное сканирование, при котором предыдущие результаты не будут учитываться; - собственный Пользовательский агент ; -п — адрес прокси-сервера, если необходимо.



Немного об отчете

Результат сканирования представляется в виде подробного отчета обо всех найденных уязвимостях в формате HTML-страницы, в понятной и удобной для чтения форме.

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

Для удобства навигации к названию категории будет добавлена ссылка, нажав на которую, вы сможете перейти в нее:

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

Существенным минусом отчета является отсутствие карты веб-приложения как таковой, без которой не будет понятно, все ли адреса и параметры проанализированы.

Также существует вероятность ложных срабатываний.

В нашем случае в отчет включены «файлы резервных копий» и «потенциально опасные файлы».

Их количество не соответствует действительности, так как на сервере таких файлов не было:

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

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

Еще одним недостатком отчета является отсутствие окраски найденных уязвимостей (в зависимости от их критичности) или хотя бы разделения их по категориям.

Единственный способ косвенно понять критичность найденной уязвимости — использовать параметр --цвет во время сканирования, и тогда найденные уязвимости будут окрашены в разные цвета:

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

Но сам доклад такой окраски не дает.

Уязвимости



SQLi

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

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

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

Если бы функцию деавторизации реализовать в виде отдельного скрипта, отвечающего за обработку этой процедуры, то можно было бы полностью исключить ее через параметр -x и тем самым предотвратить ее срабатывание.

В противном случае исключить его обработку не удастся.

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



XSS

Сканер отлично справился с поставленной задачей и нашел все подготовленные уязвимости:

Проверка сайта на уязвимости самостоятельно с помощью Wapiti



LFI/RFI

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

Проверка сайта на уязвимости самостоятельно с помощью Wapiti

В целом, несмотря на ложные срабатывания и отсутствие уязвимостей, Wapiti как бесплатный инструмент показывает довольно хорошие результаты производительности.

В любом случае стоит признать, что сканер достаточно мощный, гибкий и многофункциональный, а главное – бесплатный, поэтому имеет право на использование, помогая администраторам и разработчикам получать базовую информацию о статусе.

безопасность веб-приложения.

Будьте здоровы и защищены! Теги: #информационная безопасность #DevOps #тестирование веб-сервисов #веб-безопасность #wapiti #веб-сканер

Вместе с данным постом часто просматривают: