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
Инструкции по droopescan
Ссылки на инструкции будут добавлены позже.
Comments are Closed