You are here: Home » Веб приложения » droopescan

droopescan

Описание droopescan

Основанный на плагинах сканер, который помогает исследователям безопасности выявить проблемы с несколькими системами управления контентом (CMS), преимущественно с Drupal и Silverstripe.

Также поддерживаются такие CMS как:

  • Drupal.
  • SilverStripe.
  • Wordpress.

Реализована частичная функциональность для:

  • Joomla (только перечисление версии и интересных URL).

Droopescan нацелен быть самым точным по умолчанию, при этом не перегружать целевой сервер из-за чрезмерных одновременных запросов. Поэтому, по умолчанию, большое количество запросов будет сделано в 4 потока; эти настройки можно поменять используя соответствующие аргументы --number и --threads.

Этот инструмент способен выполнять четыре вида тестов. По умолчанию запускаются все тесты, но вы можете указать желаемые тесты с флагом -e или --enumerate:

  • p — Проверка плагинов: Выполняет несколько тысяч HTTP запросов и возвращает список всех найденных плагинов, которые установлены на целевом хосте.
  • t — Проверка тем: Как и предыдущее, только для тем.
  • v — Проверка версий: Загружает несколько файлов и, основываясь на контрольных суммах этих файлов, возвращает все возможные версии.
  • i — Проверки интересных url: Проверяет интересные url (административные панели, файлы readme, и т.д.)

Домашняя страница: https://github.com/droope/droopescan

Автор:

Лицензия: GPLv3

Справка по droopescan

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

DroopeScan (под-команды ...) [опции ...] {аргументы ...}
команды:

  scan
    сканирование cms.

  stats
    показать статус сканера и возможности.

опциональные аргументы:
  -h, --help  показать справку и выйти
  --debug     переключить вывод отладки
  --quiet     подавить весь вывод

Расширенная справка:

функции по сканированию cms.

команды:

  drupal
    инструменты, связанные со сканированием drupal

  joomla
    инструменты, связанные со сканированием joomla

  silverstripe
    инструменты, связанные со сканированием silverstripe

  wordpress
    инструменты, связанные со сканированием wordpress

опциональные аргументы:
  -h, --help  показать справку и выйти
  --debug     переключить вывод отладки
  --quiet     подавить весь вывод
  -u URL, --url URL
  -U URL_ФАЙЛ, --url-file URL_ФАЙЛ
                        Файл, который содержит список URL.
  --enumerate {a,i,p,t,v}, -e {a,i,p,t,v}
                        Что перечислить; по умолчанию всё включено, опциональный выбор:
                            p - плагины
                            t - темы
                            v - версия
                            i - интересные url
                            a - всё
  --method {not_found,ok,forbidden}
                        Некоторые веб-сервера отвечают с 403 когда существует папка. Другие — с 404.
                        Другие с 200; по умолчанию — определить автоматически.
  --verb {head,get}     Используемый метод HTTP; опция по умолчанию — это head,
                        кроме запросов по перечислению версий, которая всегда
                        get поскольку нам нужно получить хеш из
                        содержимого фоайла
  --number ЧИСЛО, -n ЧИСЛО
                        Количество слов для попытки из словаря плагинов/тем. По умолчанию
                        это 1000. Используйте -n 'all' для использования всех доступных.
  --plugins-base-url PLUGINS_BASE_URL
                        Расположение, где CMS размещает плагины.
                        По умолчанию используется типичное значение для CMS. Первое %s в
                        строке будет заменено на url, а второе
                        будет заменено на имя модуля. Например,
                        '%ssites/all/modules/%s/'
  --themes-base-url THEMES_BASE_URL
                        То же самое как выше, но для тем.
  --timeout TIMEOUT     Как долго ждать HTTP ответа перед 
                        сбросом (в секундах).
  --timeout-host TIMEOUT_HOST
                        Максимальное время, затрачиваемое на хост (в секундах).
  --no-follow-redirects
                        Предотвратить переход по редиректам.
  --host ХОСТ           Переписать заголовок хоста этим значением.
  --massscan-override   Заменяет значения по умолчанию на дефолтные
                        значения, удобные для массового сканирования.
  --threads ПОТОКИ, -t ПОТОКИ
                        Количество потоков. По умолчанию 4.
  --threads-identify THREADS_IDENTIFY
                        Количество потоков, используемое для идентификации CMS.
  --threads-scan THREADS_SCAN
                        Потоки, используемые для массового сканирования.
  --threads-enumerate THREADS_ENUMERATE
                        Потоки для перечисления плагинов.
  --output {json,standard}, -o {json,standard}
                        Формат вывода
  --debug-requests      Напечатать каждый сделанный HTTP запрос и ответ
                        возвращённый сервером (в целях отладки).
                        Отключает полосы потока и загрузки.
  --error-log ERROR_LOG
                        Файл для сохранения ошибок.
  --resume              Возобновить сканирование по url_file после последнего просканированного
                        url. Нужно использовать вместе с --error-log.

Руководство по droopescan

Страница man отсутствует.

Указание цели.

Вы можете указать конкретный хост для сканирования, используя параметр -u или --url:

droopescan scan drupal -u example.org

Вы можете также пропустить аргумент drupal. Это запустит “идентификацию CMS”, вроде такого:

droopescan scan -u example.org

Можно просканировать несколько URL используя параметр -U или --url-file. После параметра должен следовать файл, который содержит список URL.

droopescan scan drupal -U list_of_urls.txt

В этом примере можно пропустить параметр drupal. Для каждого сайта будут сделаны несколько GET запросов, чтобы выполнить идентификацию CMS и если сайт окажется работающим на поддерживаемой КМС, то он будет просканирован и добавлен в выходной список. Это может быть полезно, например, для запуска droopescan в отношении сайтов вашей организации.

droopescan scan -U list_of_urls.txt

Ниже приведёт пример списка URL, один адрес на строку:

http://localhost/drupal/6.0/
http://localhost/drupal/6.1/
http://localhost/drupal/6.10/
http://localhost/drupal/6.11/
http://localhost/drupal/6.12/

Файл, содержащий URL и значения для перезаписи дефолтного заголовка хоста, разделённые табом или пробелами также подходят для файлов URL. Это может быть полезным при осуществлении сканирования большого количества хостов и вы хотите предотвратить нежелательные DNS запросы. В качестве пояснения пример ниже:

192.168.1.1 example.org
http://192.168.1.1/ example.org
http://192.168.1.2/drupal/  example.org

Весьма заманчиво протестировать, работает ли сканер на официальном сайте конкретной КМС, просканировав официальный сайт (например, wordpress.org для wordpress), но официальные сайты редко используют оригинальную установку их уважаемой CMS или функции из коробки. Например, wordpress.org работает на самой крайней версии wordpress, которая совсем не будет идентифицирована как wordpress в сканере droopescan, поскольку контрольные суммы не соответствуют каким-либо известным версиям wordpress.

Аутентификация.

Приложение в полной мере поддерживает файлы .netrc и переменные окружения http_proxy.

Используйте файл .netrc для базовой аутентификации. Примером файла netrc (файл под названием .netrc размещён в вашей корневой директории) может быть следующее:

machine secret.google.com
    login admin@google.com
    password Winter01

Вы можете установить переменные http_proxy и https_proxy. Это позволит вам установить родительский HTTP прокси, в котором вы можете организовать более комплексные типы аутентификации (например, Fiddler, ZAP, Burp)

export http_proxy='user:password@localhost:8080'
export https_proxy='user:password@localhost:8080'
droopescan scan drupal --url http://localhost/drupal

ВНИМАНИЕ: Специально, чтобы позволить прерывающие прокси и тестирование приложений с плохим SSL, droopescan позволяет самоподписанные, т. е. невалидные сертификаты. ˙ ͜ʟ˙

Вывод

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

Его можно контролировать флагом --output. Примером вывода JSON может быть следующее (убраны избыточные пробелы):

{
  "themes": {
    "is_empty": true,
    "finds": [

    ]
  },
  "interesting urls": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/CHANGELOG.txt",
        "description": "Default changelog file."
      },
      {
        "url": "https:\/\/www.drupal.org\/user\/login",
        "description": "Default admin."
      }
    ]
  },
  "version": {
    "is_empty": false,
    "finds": [
      "7.29",
      "7.30",
      "7.31"
    ]
  },
  "plugins": {
    "is_empty": false,
    "finds": [
      {
        "url": "https:\/\/www.drupal.org\/sites\/all\/modules\/views\/",
        "name": "views"
      },
      [...snip...]
    ]
  }
}

Некоторые атрибуты должны быть опущены из объекта JSON, если часть сканирования не проводилась.

Здесь представлено, как выглядит вывод с нескольких сайтов; каждая строка содержит валидный объект JSON, как показано выше.

   $ droopescan scan drupal -U six_and_above.txt -e v
    {"host": "http://localhost/drupal-7.6/", "version": {"is_empty": false, "finds": ["7.6"]}}
    {"host": "http://localhost/drupal-7.7/", "version": {"is_empty": false, "finds": ["7.7"]}}
    {"host": "http://localhost/drupal-7.8/", "version": {"is_empty": false, "finds": ["7.8"]}}
    {"host": "http://localhost/drupal-7.9/", "version": {"is_empty": false, "finds": ["7.9"]}}
    {"host": "http://localhost/drupal-7.10/", "version": {"is_empty": false, "finds": ["7.10"]}}
    {"host": "http://localhost/drupal-7.11/", "version": {"is_empty": false, "finds": ["7.11"]}}
    {"host": "http://localhost/drupal-7.12/", "version": {"is_empty": false, "finds": ["7.12"]}}
    {"host": "http://localhost/drupal-7.13/", "version": {"is_empty": false, "finds": ["7.13"]}}
    {"host": "http://localhost/drupal-7.14/", "version": {"is_empty": false, "finds": ["7.14"]}}
    {"host": "http://localhost/drupal-7.15/", "version": {"is_empty": false, "finds": ["7.15"]}}
    {"host": "http://localhost/drupal-7.16/", "version": {"is_empty": false, "finds": ["7.16"]}}
    {"host": "http://localhost/drupal-7.17/", "version": {"is_empty": false, "finds": ["7.17"]}}
    {"host": "http://localhost/drupal-7.18/", "version": {"is_empty": false, "finds": ["7.18"]}}
    {"host": "http://localhost/drupal-7.19/", "version": {"is_empty": false, "finds": ["7.19"]}}
    {"host": "http://localhost/drupal-7.20/", "version": {"is_empty": false, "finds": ["7.20"]}}
    {"host": "http://localhost/drupal-7.21/", "version": {"is_empty": false, "finds": ["7.21"]}}
    {"host": "http://localhost/drupal-7.22/", "version": {"is_empty": false, "finds": ["7.22"]}}
    {"host": "http://localhost/drupal-7.23/", "version": {"is_empty": false, "finds": ["7.23"]}}
    {"host": "http://localhost/drupal-7.24/", "version": {"is_empty": false, "finds": ["7.24"]}}
    {"host": "http://localhost/drupal-7.25/", "version": {"is_empty": false, "finds": ["7.25"]}}
    {"host": "http://localhost/drupal-7.26/", "version": {"is_empty": false, "finds": ["7.26"]}}
    {"host": "http://localhost/drupal-7.27/", "version": {"is_empty": false, "finds": ["7.27"]}}
    {"host": "http://localhost/drupal-7.28/", "version": {"is_empty": false, "finds": ["7.28"]}}
    {"host": "http://localhost/drupal-7.29/", "version": {"is_empty": false, "finds": ["7.29"]}}
    {"host": "http://localhost/drupal-7.30/", "version": {"is_empty": false, "finds": ["7.30"]}}
    {"host": "http://localhost/drupal-7.31/", "version": {"is_empty": false, "finds": ["7.31"]}}
    {"host": "http://localhost/drupal-7.32/", "version": {"is_empty": false, "finds": ["7.32"]}}
    {"host": "http://localhost/drupal-7.33/", "version": {"is_empty": false, "finds": ["7.33"]}}
    {"host": "http://localhost/drupal-7.34/", "version": {"is_empty": false, "finds": ["7.34"]}}

Примеры запуска droopescan

Сканирование сайта под управлением Drupal:

droopescan scan drupal -u ЗДЕСЬ_URL

Сканирование сайта под управлением Silverstripe:

droopescan scan silverstripe -u ЗДЕСЬ_URL

Установка droopescan

Установка в Kali Linux, Debian, Linux Mint, Ubuntu

apt-get install python-pip
pip install droopescan

Установка в BlackArch

Программа предустановлена в BlackArch.

sudo pacman -S droopescan

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты droopescan

61

Инструкции по droopescan

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

Близкие программы:

Рекомендуемые статьи: