Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
droopescan — Сканер на основе плагинов, помогающий специалистам по безопасности выявлять проблемы в нескольких CMS, в основном Drupal и Silverstripe. | Kitploit
Инструменты/GitHubGitHub/samjoan/droopescan
Сканеры уязвимостейСбор информацииВеб-безопасность
GitHubsamjoan/droopescan

droopescan

Сканер на основе плагинов, помогающий специалистам по безопасности выявлять проблемы в нескольких CMS, в основном Drupal и Silverstripe.

Репозиторий
1.4k2742 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

droopescan

Build Status PyPI version AGPL license

Сканер на основе плагинов, помогающий специалистам по безопасности выявлять проблемы с несколькими CMS.

Использование droopescan для атаки на цели без предварительного взаимного согласия незаконно. Ответственность за соблюдение всех применимых местных, государственных и федеральных законов лежит на конечном пользователе. Разработчики не несут ответственности и не отвечают за любое неправильное использование или ущерб, причиненный этой программой. Обратите внимание, что хотя droopescan выводит наиболее вероятную версию CMS, установленную на удаленном хосте, любое сопоставление номеров версий с уязвимостями должно выполняться пользователем вручную.

Поддерживаемые CMS:

  • SilverStripe
  • Wordpress
  • Drupal

Частичная функциональность для:

  • Joomla (только перечисление версий и интересные URL)
  • Moodle (плагины и темы очень ограничены, будьте внимательны)
root@kitploit:~
computer:~/droopescan$ droopescan scan drupal -u http://example.org/ -t 32
[+] No themes found.

[+] Possible interesting urls found:
    Default changelog file - https://www.example.org/CHANGELOG.txt
    Default admin - https://www.example.org/user/login

[+] Possible version(s):
    7.34

[+] Plugins found:
    views https://www.example.org/sites/all/modules/views/
        https://www.example.org/sites/all/modules/views/README.txt
        https://www.example.org/sites/all/modules/views/LICENSE.txt
    token https://www.example.org/sites/all/modules/token/
        https://www.example.org/sites/all/modules/token/README.txt
        https://www.example.org/sites/all/modules/token/LICENSE.txt
    pathauto https://www.example.org/sites/all/modules/pathauto/
        https://www.example.org/sites/all/modules/pathauto/README.txt
        https://www.example.org/sites/all/modules/pathauto/LICENSE.txt
        https://www.example.org/sites/all/modules/pathauto/API.txt
    libraries https://www.example.org/sites/all/modules/libraries/
        https://www.example.org/sites/all/modules/libraries/CHANGELOG.txt
        https://www.example.org/sites/all/modules/libraries/README.txt
        https://www.example.org/sites/all/modules/libraries/LICENSE.txt
    entity https://www.example.org/sites/all/modules/entity/
        https://www.example.org/sites/all/modules/entity/README.txt
        https://www.example.org/sites/all/modules/entity/LICENSE.txt
    google_analytics https://www.example.org/sites/all/modules/google_analytics/
        https://www.example.org/sites/all/modules/google_analytics/README.txt
        https://www.example.org/sites/all/modules/google_analytics/LICENSE.txt
    ctools https://www.example.org/sites/all/modules/ctools/
        https://www.example.org/sites/all/modules/ctools/CHANGELOG.txt
        https://www.example.org/sites/all/modules/ctools/LICENSE.txt
        https://www.example.org/sites/all/modules/ctools/API.txt
    features https://www.example.org/sites/all/modules/features/
        https://www.example.org/sites/all/modules/features/CHANGELOG.txt
        https://www.example.org/sites/all/modules/features/README.txt
        https://www.example.org/sites/all/modules/features/LICENSE.txt
        https://www.example.org/sites/all/modules/features/API.txt
    [... snip for README ...]

[+] Scan finished (0:04:59.502427 elapsed)

Полный список опций можно получить, выполнив:

root@kitploit:~
droopescan --help
droopescan scan --help

Почему не X?

Потому что droopescan:

  • быстрый
  • стабильный
  • актуальный
  • позволяет одновременно сканировать несколько сайтов
  • на 100% написан на Python

Установка

С помощью pip (рекомендуется)

Установка проста с помощью pip:

root@kitploit:~
apt-get install python-pip
pip install droopescan

Из исходников

Установка вручную выполняется следующим образом:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
pip install -r requirements.txt
./droopescan scan --help

Ветка master соответствует последнему релизу (тому, что в pypi). Ветка разработки нестабильна, и все запросы на слияние должны быть направлены на неё.

BlackArch

Установка пакета BlackArch (поддерживается третьей стороной):

root@kitploit:~
sudo pacman -S droopescan

Docker

Вы можете собрать Docker-образ и запускать droopescan из Docker:

root@kitploit:~
git clone https://github.com/droope/droopescan.git
cd droopescan
docker build -t droope/droopescan .
# отображение справки
docker run --rm droope/droopescan
# пример сканирования сайта на Drupal
docker run --rm droope/droopescan scan drupal -u https://drupal.example.com

Возможности

Типы сканирования

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

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

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

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

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

root@kitploit:~
    droopescan scan drupal -u example.org

Вы также можете опустить аргумент drupal. Это запустит «идентификацию CMS» следующим образом:

root@kitploit:~
    droopescan scan -u example.org

Несколько URL могут быть отсканированы с помощью параметра -U или --url-file. Этот параметр должен указывать на файл, содержащий список URL.

root@kitploit:~
    droopescan scan drupal -U list_of_urls.txt

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

root@kitploit:~
    droopescan scan -U list_of_urls.txt

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

root@kitploit:~
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 и значение для переопределения заголовка Host по умолчанию, разделённые табуляцией или пробелами. Это удобно при сканировании большого диапазона хостов, когда вы хотите избежать лишних DNS-запросов. Для пояснения ниже приведён пример:

root@kitploit:~
192.168.1.1	example.org
http://192.168.1.1/	example.org
http://192.168.1.2/drupal/	example.org

Вполне соблазнительно проверить, работает ли сканер для конкретной CMS, сканируя официальный сайт (например, wordpress.org для WordPress), но официальные сайты редко работают со стандартными установками своих CMS или делают нетрадиционные вещи. Например, wordpress.org работает с самой последней версией WordPress, которая не будет идентифицирована как WordPress с помощью droopescan, поскольку контрольные суммы не совпадают ни с одной известной версией WordPress.

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

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

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

root@kitploit:~
machine secret.google.com
    login [email protected]
    password Winter01

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

root@kitploit:~
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 будет выглядеть так (без лишних пробелов):

root@kitploit:~
{
  "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-объект, как показано выше.

root@kitploit:~
    $ 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"]}}

Отладка

Когда что-то идёт не так, как вы ожидаете, вы можете проверить причину с помощью команды --debug-requests.

Пример вывода:

root@kitploit:~
computer:~/droopescan# droopescan scan silverstripe -u http://localhost -n 10 -e p --debug-requests
[head] http://localhost/framework/... 403
[head] http://localhost/cms/css/layout.css... 404
[head] http://localhost/framework/css/UploadField.css... 200
[head] http://localhost/misc/test/error/404/ispresent.html... 404
[head] http://localhost/widgetextensions/... 404
[head] http://localhost/orbit/... 404
[head] http://localhost/sitemap/... 404
[head] http://localhost/simplestspam/... 404
[head] http://localhost/ecommerce_modifier_example/... 404
[head] http://localhost/silverstripe-hashpath/... 404
[head] http://localhost/timeline/... 404
[head] http://localhost/silverstripe-hiddenfields/... 404
[head] http://localhost/addressable/... 404
[head] http://localhost/silverstripe-description/... 404
[+] No plugins found.

[+] Scan finished (0:00:00.058422 elapsed)

Также существует параметр --debug, который может использоваться для отладки внутренних компонентов приложения.

Статистика

Вы можете получить актуальный отчёт о возможностях сканера, выполнив следующую команду:

root@kitploit:~
    droopescan stats

Пример вывода может выглядеть так:

root@kitploit:~
Functionality available for ‘drupal’:
- Enumerate plugins (XXXX plugins.)
- Enumerate themes (XXXX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X-alphaXX, X.XX, X.XX.)
Functionality available for ‘joomla’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version XX.X, X.X.X, X.X.XX.rcX.)
Functionality available for ‘wordpress’:
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.X, X.X.X, X.X.X.)
Functionality available for ‘silverstripe’:
- Enumerate plugins (XXX plugins.)
- Enumerate themes (XX themes.)
- Enumerate interesting urls (X urls.)
- Enumerate version (up to version X.X.XX, X.X.XX, X.X.XX.)

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

Вклад

Создайте свой собственный плагин

Вы можете добавить поддержку для вашей любимой CMS. Процесс на самом деле довольно прост, и много информации можно почерпнуть, просмотрев файл example.py в папке plugins/.

Этот файл должен послужить хорошей основой для вашей реализации.

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

root@kitploit:~
$ cp plugins/example.py plugins/joomla.py
$ cp plugins.d/example.conf plugins.d/joomla.conf

Затем вам нужно перейти в plugins/joomla.py и изменить несколько вещей:

  • Имя класса должно быть Joomla.
  • Метка плагина (находится в Meta.label) должна быть изменена на joomla.
  • В конце файла вызов register должен быть изменён, чтобы отражать правильное имя класса.
  • Открытая функция 'example' должна быть переименована в joomla.
root@kitploit:~
    @controller.expose(help='example scanner')
    def joomla(self):
        self.plugin_init()

Нам также нужно изменить файл plugins.d/joomla.conf следующим образом:

root@kitploit:~
[joomla]
enable_plugin = true

Теперь наше состояние должно выглядеть так:

root@kitploit:~
$ droopescan scan joomla
[+] --url parameter is required.

Вашим следующим шагом будет создание валидного списка слов для плагинов, валидного списка слов для тем, файла versions.xml, и, опционально, списка интересных URL, а также замена всех переменных, находящихся в joomla.py, на значения, корректные для вашей реализации.

Плагин должен обновляться автоматически, чтобы запрос на слияние был принят. Дальнейшая документация может быть предоставлена позже, но пока имейте в виду, что необходимо реализовать функции update_version_check, update_version, update_plugins_check и update_plugins. Для справки просмотрите файл drupal.py. Это требуется для обеспечения актуальности плагинов.

Проблемы и запросы на слияние

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

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

Для запуска тестов необходимо установить некоторые зависимости. Выполнение следующих команд приведёт к их установке и запуску тестов:

root@kitploit:~
    apt-get install libxslt1-dev libxml2-dev zlib1g-dev python python-pip python-dev python3 python3-pip python3-dev
    pip install -r requirements.txt -r requirements_test.txt
    pip3 install -r requirements.txt -r requirements_test.txt
    ./droopescan test

Вы можете запускать отдельные тесты с помощью флага -s.

root@kitploit:~
./droopescan test -s test_integration_drupal

Лицензия

Проект лицензирован под лицензией AGPL. См. файл LICENSE.

Скачать инструмент