Чтобы просканировать веб-сайт или веб-приложение на наличие всевозможных уязвимостей, существует довольно обширный список программ. Такие программы называются сканеры уязвимостей. Главная цель таких утилит – найти уязвимости, собрать информацию о сайте, а также проверить, может ли сайт быть подвергнут сетевым атакам. Для таких целей отлично подойдет сканер под названием Arachni.

Arachni позиционируется как высокопроизводительная среда и фреймворк для сканирования и поиска уязвимостей на веб-сайте. Впервые он был выпущен в 2015 году Болгарской частной компанией Sarosys LLC, которая специализируется на разработке программного обеспечения в области кибербезопасности. Программа написана на языке программирования Ruby. Управлять Arachni можно из командной строки, однако основным способом управления все же считается простой и удобный веб-интерфейс.

Среди достоинств Arachni можно выделить следующие:

  • Бесплатный проект с открытым исходным кодом;

  • Поддержка Custom Headers (настраиваемые заголовки);

  • Поддержка SSL;

  • Поддержка прокси — SOCKS4, SOCKS4A, SOCKS5, HTTP/1.1, HTTP/1.0;

  • Поддержка различных методов аутентификации, таких как SSL (аутентификация при помощи сертификатов), form-based (аутентификация на основе формы), Cookie-Jar, Basic-Digest, NTLMv1, Kerberos;

  • Встроенный веб-интерфейс;

  • Высокая производительность;

  • Создание отчетов в форматах HTML, JSON, XML, YAML и т. д.;

  • Большое количество поддерживаемых операционных систем, программных продуктов, языков программирования (см. ниже).

Arachni умеет искать уязвимости в следующих программных компонентах, фреймворках и языках программирования:

  • BSD

  • Linux/ Unix

  • Windows

  • Apache

  • IIS

  • Nginx

  • Tomcat

  • PHP

  • ASP/ASPX

  • Java

  • Python

  • Ruby

  • Ruby on Rails

  • Django

  • ASP.NET MVC

  • CherryPy

С полным списком всех поддерживаемых компонентов и систем можно ознакомиться на официальной странице в GitHub.

Установка

Arachni является кроссплатформенным ПО. Его можно запустить на ОС семейства Windows, Linux и Mac OSX.

В статье покажем процесс установки на примере ОС Kali Linux версии 022.4 (kali-rolling). Пакет Arachni отсутствует в репозиториях ОС. Для начала необходимо скачать архив с программой, а затем запустить соответствующий файл. Запустить Arachni можно на любом дистрибутиве Linux, где присутствует пакет Glibc версии 2.31 и выше. По умолчанию данный пакет уже предустановлен во всех современных дистрибутивах Linux.

Скачиваем архив с программой при помощи утилиты wget:

wget https://github.com/Arachni/arachni/releases/download/v1.6.1.3/arachni-1.6.1.3-0.6.1.1-linux-x86_64.tar.gz

После того, как архив был скачан, его необходимо разархивировать:

tar -xzvf arachni-1.6.1.3-0.6.1.1-linux-x86_64.tar.gz

Далее переходим в появившуюся директорию, а затем внутри нее – в каталог bin:

cd arachni-1.6.1.3-0.6.1.1/bin

Запустить файл arachni_web:

./arachni_web

После этого в браузере переходим по адресу:

localhost:9292

Стандартный логин и пароль для входа следующие:

admin@admin.admin

administrator

После входа отобразится главная страница:

Использование

Для запуска сканирования необходимо перейти в раздел Scans, далее в выпадающем меню выбрать New:

Откроется интерфейс для сканирования, который имеет следующие поля:

  1. Target URL – задается URL сайта, который будет просканирован;

  2. Configuration profile to use – можно выбрать один из предложенных профилей сканирования. Помимо стандартного (Default), можно выбрать профиль Cross-Site Scripting (XSS) и SQL Injection

  3. Description – описание сканирования. Можно добавить заметки, которые будут отображены в отчете.

Ниже будет кнопка Advanced options, при нажатии на которую будет отображен дополнительный раздел с параметрами.

Параметр Distribution содержит в себе:

Instance count задает количество запущенных копий сканера. Чем больше значений задано, тем больше копий будет запущено и как результат увеличивается время сканирования. Данный параметр эффективно работает при наличии в системе многоядерного процессора.

Multi-Instance scans – позволяет запускать arachni в нескольких режимах:

  • Direct – прямое сканирование с текущего сервера до целевого сайта. Дополнительных настроек не требуется.

  • Remote – удаленное сканирование. При выборе этого пункта сканирование будет производиться на стороннем сервере, который будет играть роль агента, и весь трафик будет идти через сторонний сервер. Необходимо заранее добавить сервер.

  • Grid – распределённая балансировка. В отличие от режима Remote, Grid позволяет использовать несколько серверов для балансировки.

Scheduling – можно запланировать сканирование в определенное время. Также можно настроить запуск повторного сканирования.

Рассмотрим на примере сайт testphp.vulnweb.com, на котором уже присутствуют некоторые уязвимости с целью наглядной демонстрации их поиска. В поле Target URL необходимо вводить URL сайта, начиная с http/https, иначе возникнет ошибка:

not a valid absolute URL
Full URL of the targeted web application (must include the appropriate protocol, http or https)

Чтобы начать сканирование, достаточно нажать на кнопку Go!

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

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

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

В Arachni используется 4 категории уязвимостей, каждая из которых выделяется своим цветом:

High — высокий (критический) уровень уязвимостей. К нему относят SQL/NoSQL-инъекции, XSS атаки, Code Injection, Remote File Inclusion. Выделен красным цветом.

Medium — средний уровень критичности найденных уязвимостей. К нему относят directory listing, наличие конфигурационных файлов, незащищенные формы логинов/паролей и другие. Выделен оранжевым цветом.

Low – низкий уровень критичности. В эту категорию попадают такие уязвимости как Clickjacking, наличие открытых админ-панелей и другие. Выделяется желтым цветом.

Informational — информационный уровень, который сообщает о том, что найдена информация об используемых компонентах веб-сайта, а также о сервере. Сюда относят версии веб-сервера, СУБД, библиотек, фреймворков, а также версии языков программирования и операционных систем. Как правило, уязвимости, относящиеся к данной категории, не могут напрямую навредить системе, однако повышают риск сбора информации о сайте и его компонентах. Выделен синим цветом.

Справа отображается подробная информация о найденной уязвимости:

Под описанием уязвимости присутствует кнопка CWE для перехода на сайт cwe.mitre.org, представляющий собой базу данных уязвимостей с их подробным описанием:

Слева у каждого URL будет находиться синяя кнопка со знаком вопроса:

При клике на нее откроется дополнительная страница с общим описанием найденной уязвимости:

Ниже вы увидите участок кода, в котором обнаружена уязвимость. Он выделен красным цветом:

Убедимся, что найденные уязвимости действительно присутствуют на отсканированном сайте. Для этого попробуем реализовать атаку XSS (межсайтовый скриптинг). В разделе Cross-Site Scripting (XSS) перейдем по любой ссылке, где была найдена уязвимость:

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

Вставим в поле ввода текста следующий JavaScript код:

<script>alert("Arachni test!")</script>

Атака XSS успешно реализована.

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

После перехода по ссылке отобразилось системное сообщение от СУБД MySQL об ошибке в SQL синтаксисе, благодаря которой можно реализовать атаку типа SQL-инъекция:

Для того чтобы завершить программу, необходимо вернуться в терминал и нажать сочетание клавиш Ctrl + C:

Чтобы скачать готовый отчет в одном из поддерживаемых форматов, найдите пункт Download report as и скачайте отчет в необходимом формате:

Отчет в формате HTML:

Отчет в формате JSON:

Отчет в формате XML:

Настройка Arachni для сканирования по расписанию

Ранее в организации, где я работал, для поиска уязвимостей в веб-сайтах и в веб-приложениях изначально использовался коммерческий продукт. Однако после того как часть западных компаний ушла из РФ, нам потребовалось найти временную альтернативу. Был составлен список возможных аналогов, среди которых фигурировали такие продукты, как OWASP ZAP, StackHawk, GoLismero.

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

Благодаря множеству функций, Arachni можно использовать как основной сканер для поиска уязвимостей в веб-приложениях и веб-сайтах. Среди главных достоинств, которые отличают его от конкурентов —  возможность организовать сканирование на нескольких хостах одновременно с целью снижения нагрузки, а также наличие сканирования по расписанию. 

Организуем следующий процесс сканирования — предположим, у нас есть веб-сайт с символическим именем test-site.com Данный сайт представляет собой интернет-магазин с большим набором разнообразных функций. Функциональность сайта постоянно меняется и, как следствие, увеличивается риск возникновения новых веб-уязвимостей.

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

В пункте Start at зададим время, когда сканирование будет начато. Исходя из нагрузки на наш веб-сайт, выбираем нужную дату и время. В пункте Recurring настроим периодичность сканирования. В данном случае сканирование будет автоматически запускаться в 18 часов и 1 минуту в промежутке с 10 по 17 числа с апреля по август 2023 года:

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

Итоговая схема сканирования изображена на схеме ниже:

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


НЛО прилетело и оставило здесь промокод для читателей нашего блога:

— 15% на все тарифы VDS (кроме тарифа Прогрев) — HABRFIRSTVDS

Комментарии (2)


  1. rewiaca
    22.04.2023 00:37

    У вас контент план годовалой давности? Арачни уже не поддерживается, разработчики переключились на https://github.com/scnr/installer


    1. mobi
      22.04.2023 00:37

      Среди достоинств Arachni можно выделить следующие:
      Бесплатный проект с открытым исходным кодом;

      Вот с этим у Ecsypno/SCNR есть проблема.