
Инструмент командной строки для сканирования результатов поиска Google на наличие уязвимостей

Сканируйте результаты поиска Google (или других источников) на наличие уязвимостей.
dorkbot — это модульный инструмент командной строки для выполнения сканирования уязвимостей на наборах веб-страниц, возвращаемых поисковыми запросами Google или другими поддерживаемыми источниками. Он разделен на два набора модулей:
Цели сохраняются в базе данных по мере индексации. После сканирования создается стандартный отчет в формате JSON, содержащий все найденные уязвимости. Процессы индексации и сканирования могут выполняться отдельно или совместно в одной команде (максимум по одному каждого типа).
$ pip3 install dorkbot wapiti3
$ dorkbot -i google_api -o key=ваш_ключ_api_здесь -o engine=идентификатор_движка -o query="filetype:php inurl:id"
$ dorkbot -s wapiti
-h, --help Показать справку по программе (или указанному модулю)
--show-defaults Показать значения по умолчанию в выводе справки
usage: dorkbot [-c CONFIG] [-r DIRECTORY] [--source [SOURCE]]
[--show-defaults] [--count COUNT] [--random] [-h] [--log LOG]
[-v] [-V] [-d DATABASE] [-u] [--drop-tables]
[--retries RETRIES] [--retry-on RETRY_ON] [--show-stats] [-l]
[-n] [--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[--list-sources] [--add-blocklist-item ITEM]
[--delete-blocklist-item ITEM] [--flush-blocklist] [-b]
[--fingerprint-max FINGERPRINT_MAX] [--list-blocklist]
[--flush-fingerprints] [-g] [-f] [--mark-unscanned MARK_UNSCANNED]
[-t] [-x] [-p SCANNER_ARG] [-s SCANNER] [-o INDEXER_ARG]
[-i INDEXER]
options:
-c, --config CONFIG Файл конфигурации
-r, --directory DIRECTORY
Рабочая директория dorkbot (расположение базы данных, инструментов, отчетов по умолчанию)
--source [SOURCE] Метка, связанная с целями
--show-defaults Показать значения по умолчанию в выводе справки
-h, --help Показать справку по программе (или указанному модулю)
--log LOG Путь к файлу журнала
-v, --verbose Включить подробное логирование (можно использовать несколько раз для увеличения подробности)
-V, --version Вывести версию
retrieval:
--count COUNT количество целей для получения (0/не задано = все)
--random получать цели в случайном порядке
database:
-d, --database DATABASE
Файл/URI базы данных
-u, --prune Применить снятие отпечатков и блок-лист без сканирования
--drop-tables Удалить и пересоздать таблицы
--retries RETRIES Количество повторных попыток при ошибке операции
--retry-on RETRY_ON Строки ошибок, при которых следует повторить попытку (можно использовать несколько раз)
--show-stats Показать общее количество целей и отпечатков (включая непросканированные)
targets:
-l, --list-targets Список целей в базе данных
-n, --unscanned-only Включать только непросканированные цели
--list-sources Список источников в базе данных
--add-target TARGET Добавить URL в базу целей
--delete-target TARGET
Удалить URL из базы целей
--flush-targets Удалить все цели
-m, --delete-on-match
Удалить цель, если она соответствует элементу блок-листа
-e, --delete-on-error
Удалить цель, если при обработке возникла ошибка
indexing:
-i, --indexer INDEXER
Используемый модуль индексатора
-o, --indexer-arg INDEXER_ARG
Передать аргумент модулю индексатора (можно использовать несколько раз)
scanning:
-s, --scanner SCANNER
Используемый модуль сканера
-p, --scanner-arg SCANNER_ARG
Передать аргумент модулю сканера (можно использовать несколько раз)
-t, --test Получить следующую сканируемую цель, но не отмечать её как просканированную
-x, --reset-scanned Сбросить статус сканирования всех целей
--mark-unscanned MARK_UNSCANNED
Сбросить статус сканирования указанной цели
fingerprints:
-g, --generate-fingerprints
Сгенерировать отпечатки для всех целей
-f, --flush-fingerprints
Удалить все сгенерированные отпечатки
--fingerprint-max FINGERPRINT_MAX
Максимальное количество совпадений по отпечатку перед удалением новых совпадений
blocklist:
--list-blocklist Список записей внутреннего блок-листа
--add-blocklist-item ITEM
Добавить ip/хост/шаблон регулярного выражения во внутренний блок-лист
--delete-blocklist-item ITEM
Удалить элемент из внутреннего блок-листа
--flush-blocklist Удалить все элементы внутреннего блок-листа
-b, --external-blocklist EXTERNAL_BLOCKLIST
Дополнительный внешний файл/база данных блок-листа (можно использовать несколько раз)
Драйверы базы данных:
Сканеры:
При необходимости dorkbot ищет инструменты в следующем порядке:
Все базы данных SQLite, инструменты и отчеты сохраняются в рабочей директории dorkbot, которая по умолчанию является текущей. Вы можете указать конкретную директорию с помощью флага --directory. Пути по умолчанию в этой директории:
Файлы конфигурации по умолчанию читаются из ~/.config/dorkbot/ (Linux / MacOS) или в папке Application Data (Windows), с учетом $XDG_CONFIG_HOME / %APPDATA%. Пути по умолчанию в этой директории:
Файл конфигурации (dorkbot.ini) можно использовать для предварительного заполнения некоторых флагов командной строки.
Пример dorkbot.ini:
[dorkbot] database=/opt/dorkbot/dorkbot.db [dorkbot.indexers.wayback] domain=example.com [dorkbot.scanners.arachni] path=/opt/arachni/bin report_dir=/tmp/reports
База данных целей хранит URL для сканирования и источники, откуда они поступили. Она отслеживает статус сканирования каждого URL, создавая список отпечатков для каждой уникальной страницы + набора параметров и сравнивая новые цели с существующими отпечатками. Отпечатки нужно генерировать только один раз; они будут генерироваться по мере необходимости. Отпечатки и статус сканирования могут быть сброшены независимо.
Поддерживаемые адреса баз данных:
Обратите внимание, что для целевых баз данных SQLite протокол необязателен (он все еще требуется для внешних блок-листов). Кроме того, встроенная память SQLite может использоваться для полного отказа от записи на диск, указав адрес базы данных ":memory:".
Список блокировки — это набор IP-адресов, имен хостов или регулярных выражений шаблонов URL, которые не должны сканироваться. Если целевой URL соответствует любому элементу этого списка, он будет пропущен и удален из базы данных. Внутренний список блокировки хранится в базе данных dorkbot, но отдельный файл или база данных могут быть указаны путем передачи соответствующего пути к файлу или URI подключения в --external-blocklist. Цели сначала проверяются по внутреннему списку блокировки, а затем, при необходимости, по любым предоставленным внешним спискам.
Поддерживаемые внешние списки блокировки:
Примеры элементов списка блокировки:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
Первый элемент удалит любую цель, не содержащую знак вопроса, то есть любой URL без GET-параметров для тестирования. Второй пытается избежать функций входа, а третий блокирует все целевые URL на example.com. Четвертый исключает цели с именем хоста www.google.com, а пятый — цели, чей хост разрешается в 127.0.0.1.
Флаг очистки (prune) перебирает все цели, вычисляет отпечатки и помечает последующие совпадающие цели как просканированные. Он также помечает совпадения из списка блокировки как просканированные. Результатом является база данных, в которой --list-targets --unscanned-only возвращает только сканируемые URL. Он учитывает флаг random для обработки отпечатков в случайном порядке и флаг unscanned-only для пропуска уже просканированных целей, у которых обязательно уже есть отпечатки. Проверка списка блокировки учитывает --delete-on-match для удаления цели вместо пометки как просканированной и --delete-on-error для удаления любой записи, в которой не удалось разобрать правильное имя хоста или разрешить имя хоста в IP-адрес.
Эти параметры применимы независимо от выбранного модуля:
--source [SOURCE] Метка, связанная с целями --count COUNT количество URL для получения/сканирования, или -1 для всех --random получать URL в случайном порядке
Кроме того, параметры, связанные со списком блокировки: --delete-on-match / --delete-on-error приведут к пропуску соответствующих или ошибочных целей.
http-retries RETRIES количество повторных попыток получения результатов при ошибке threads THREADS количество одновременных запросов к commoncrawl.org
Поиск на bing.com key KEY Ключ API query QUERY Поисковый запрос
Поиск в данных обхода commoncrawl.org domain DOMAIN Получить все результаты для указанного домена или поддомена index INDEX Поиск по определенному индексу filter FILTER Фильтр запроса для применения к поиску page-size PAGE_SIZE Количество результатов на страницу
Поиск на google.com key KEY Ключ API engine ENGINE ID пользовательской поисковой системы (CSE) query QUERY Поисковый запрос domain DOMAIN Ограничить поиск указанным доменом
Поиск в данных обхода указанного сервера pywb
server SERVER URL сервера pywb
domain DOMAIN Получить все результаты для указанного домена или поддомена
cdx-api-suffix CDX_API_SUFFIX
Суффикс после индекса для API индекса
index INDEX Поиск по определенному индексу
field FIELD Поле (fl) для запроса
filter FILTER Фильтр запроса для применения к поиску
page-size PAGE_SIZE
Количество результатов на страницу
Принимает URL из стандартного ввода, по одному на строку
Поиск в данных обхода archive.org domain DOMAIN Получить все результаты для указанного домена или поддомена filter FILTER Фильтр запроса для применения к поиску page-size PAGE_SIZE Количество результатов на страницу from FROM Начальная временная метка to TO Конечная временная метка
args ARGS Список дополнительных аргументов, разделенных пробелами
report-dir REPORT_DIR
Каталог для сохранения файла отчета
report-filename REPORT_FILENAME
Имя файла для сохранения отчета об уязвимостях
report-append Добавить к файлу отчета, если он существует
report-indent REPORT_INDENT
Уровень отступа для JSON отчета об уязвимостях
label LABEL Понятное название поля для включения в отчет об уязвимостях
Сканирование с помощью сканера командной строки arachni path PATH Путь к бинарному файлу сканера
Сканирование с помощью сканера командной строки scnr path PATH Путь к бинарному файлу сканера
Сканирование с помощью сканера командной строки wapiti path PATH Путь к бинарному файлу сканера