
Herramienta de línea de comandos para escanear resultados de búsqueda de Google en busca de vulnerabilidades.

Escanea resultados de búsqueda de Google (u otros) en busca de vulnerabilidades.
dorkbot es una herramienta modular de línea de comandos para realizar escaneos de vulnerabilidades contra conjuntos de páginas web devueltas por consultas de búsqueda de Google u otras fuentes compatibles. Se divide en dos conjuntos de módulos:
Los objetivos se almacenan en una base de datos a medida que se indexan. Una vez escaneados, se produce un informe JSON estándar que contiene cualquier vulnerabilidad encontrada. Los procesos de indexación y escaneo se pueden ejecutar por separado o combinados en un solo comando (hasta uno de cada uno).
$ pip3 install dorkbot wapiti3
$ dorkbot -i google_api -o key=your_api_credential_here -o engine=your_engine_id_here -o query="filetype:php inurl:id"
$ dorkbot -s wapiti
-h, --help Show program (or specified module) help
--show-defaults Show default values in help output
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-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[-i INDEXER] [-o INDEXER_ARG] [-s SCANNER] [-p SCANNER_ARG]
[-t] [-x] [--mark-unscanned MARK_UNSCANNED] [-g] [-f]
[--fingerprint-max FINGERPRINT_MAX] [--list-blocklist]
[--add-blocklist-item ITEM] [--delete-blocklist-item ITEM]
[--flush-blocklist] [-b EXTERNAL_BLOCKLIST]
options:
-c, --config CONFIG Configuration file
-r, --directory DIRECTORY
Dorkbot directory (default location of db, tools,
reports)
--source [SOURCE] Label associated with targets
--show-defaults Show default values in help output
-h, --help Show program (or specified module) help
--log LOG Path to log file
-v, --verbose Enable verbose logging (can be used multiple times to
increase verbosity)
-V, --version Print version
retrieval:
--count COUNT number of targets to retrieve (0/unset = all)
--random retrieve targets in random order
database:
-d, --database DATABASE
Database file/uri
-u, --prune Apply fingerprinting and blocklist without scanning
--drop-tables Delete and recreate tables
--retries RETRIES Number of retries when an operation fails
--retry-on RETRY_ON Error strings that should result in a retry (can be
used multiple times)
--show-stats Show the total/unscanned target and fingerprint counts
targets:
-l, --list-targets List targets in database
-n, --unscanned-only Only include unscanned targets
--list-sources List sources in database
--add-target TARGET Add a url to the target database
--delete-target TARGET
Delete a url from the target database
--flush-targets Delete all targets
-m, --delete-on-match
Delete target if it matches blocklist item
-e, --delete-on-error
Delete target if error encountered while processing it
indexing:
-i, --indexer INDEXER
Indexer module to use
-o, --indexer-arg INDEXER_ARG
Pass an argument to the indexer module (can be used
multiple times)
scanning:
-s, --scanner SCANNER
Scanner module to use
-p, --scanner-arg SCANNER_ARG
Pass an argument to the scanner module (can be used
multiple times)
-t, --test Fetch next scannable target but do not mark it scanned
-x, --reset-scanned Reset scanned status of all targets
--mark-unscanned MARK_UNSCANNED
Reset scanned status of given target
fingerprints:
-g, --generate-fingerprints
Generate fingerprints for all targets
-f, --flush-fingerprints
Delete all generated fingerprints
--fingerprint-max FINGERPRINT_MAX
Maximum matches per fingerprint before deleting new
matches
blocklist:
--list-blocklist List internal blocklist entries
--add-blocklist-item ITEM
Add an ip/host/regex pattern to the internal blocklist
--delete-blocklist-item ITEM
Delete an item from the internal blocklist
--flush-blocklist Delete all internal blocklist items
-b, --external-blocklist EXTERNAL_BLOCKLIST
Supplemental external blocklist file/db (can be used
multiple times)
Database drivers:
Scanners:
Según sea necesario, dorkbot buscará herramientas en el siguiente orden:
Todas las bases de datos SQLite, herramientas e informes se guardan en el directorio de dorkbot, que por defecto es el directorio actual. Puede forzar un directorio específico con la bandera --directory. Las rutas de archivo predeterminadas dentro de este directorio son las siguientes:
Los archivos de configuración se leen por defecto desde ~/.config/dorkbot/ (Linux/MacOS) o en la carpeta Application Data (Windows), respetando $XDG_CONFIG_HOME / %APPDATA%. Las rutas de archivo predeterminadas dentro de este directorio son las siguientes:
El archivo de configuración (dorkbot.ini) se puede usar para precargar ciertas banderas de línea de comandos.
Ejemplo de 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
La base de datos de objetivos almacena las URL a escanear y las fuentes de donde provienen. Realiza un seguimiento del estado de escaneo de cada URL mediante la construcción de una lista de huellas digitales para cada página única + conjunto de parámetros y comparando nuevos objetivos con huellas existentes. Las huellas digitales solo necesitan generarse una vez y se generarán bajo demanda según sea necesario. Las huellas y el estado de escaneo pueden restablecerse de forma independiente.
Direcciones de base de datos compatibles:
Tenga en cuenta que para las bases de datos de destino SQLite, el protocolo es opcional (aún es necesario para listas de bloqueo externas). Además, la característica en memoria de SQLite se puede usar para evitar escribir en el disco por completo especificando una dirección de base de datos ":memory:".
La lista de bloqueo es una lista de direcciones IP, nombres de host o expresiones regulares de patrones de URL que no deben escanearse. Si una URL de destino coincide con algún elemento de esta lista, se omitirá y se eliminará de la base de datos. La lista de bloqueo interna se mantiene en la base de datos de dorkbot, pero se puede especificar un archivo o base de datos separado pasando la ruta de archivo o URI de conexión adecuada a --external-blocklist. Los objetivos se comparan primero con la lista de bloqueo interna y luego opcionalmente con cualquier lista de bloqueo externa proporcionada.
Listas de bloqueo externas compatibles:
Ejemplos de elementos de la lista de bloqueo:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
El primer elemento eliminará cualquier objetivo que no contenga un signo de interrogación, en otras palabras, cualquier URL que no contenga parámetros GET para probar. El segundo intenta evitar funciones de inicio de sesión, y el tercero bloquea todas las URL de destino en example.com. El cuarto excluye objetivos con un nombre de host de www.google.com y el quinto excluye objetivos cuyo host se resuelve a 127.0.0.1.
La bandera prune itera a través de todos los objetivos, calcula las huellas digitales y marca los objetivos coincidentes posteriores como escaneados. También marca las coincidencias de la lista de bloqueo como escaneadas. El resultado es una base de datos donde --list-targets --unscanned-only devuelve solo URL escaneables. Respeta la bandera random para procesar las huellas en orden aleatorio y la bandera unscanned-only para omitir objetivos escaneados que necesariamente ya tienen huellas. La verificación de la lista de bloqueo respeta --delete-on-match para eliminar el objetivo en lugar de marcarlo como escaneado, y --delete-on-error para eliminar cualquier entrada que falle al analizar un nombre de host válido o resolver el nombre de host a dirección IP.
Estas opciones son aplicables independientemente del módulo elegido:
--source [SOURCE] Label associated with targets --count COUNT number of urls to retrieve/scan, or -1 for all --random retrieve urls in random order
Además, las opciones relacionadas con la lista de bloqueo --delete-on-match / --delete-on-error harán que se omitan los objetivos coincidentes o erróneos.
http-retries RETRIES number of times to retry fetching results on error threads THREADS number of concurrent requests to commoncrawl.org
Searches bing.com key KEY API key query QUERY search query
Searches commoncrawl.org crawl data domain DOMAIN pull all results for given domain or subdomain index INDEX search a specific index filter FILTER query filter to apply to the search page-size PAGE_SIZE number of results to request per page
Searches google.com key KEY API key engine ENGINE CSE id query QUERY search query domain DOMAIN limit searches to specified domain
Searches a given pywb server's crawl data
server SERVER pywb server url
domain DOMAIN pull all results for given domain or subdomain
cdx-api-suffix CDX_API_SUFFIX
suffix after index for index api
index INDEX search a specific index
field FIELD field (fl) to query
filter FILTER query filter to apply to the search
page-size PAGE_SIZE
number of results to request per page
Accepts urls from stdin, one per line
Searches archive.org crawl data domain DOMAIN pull all results for given domain or subdomain filter FILTER query filter to apply to the search page-size PAGE_SIZE number of results to request per page from FROM beginning timestamp to TO end timestamp
args ARGS space-delimited list of additional arguments
report-dir REPORT_DIR
directory to save report file
report-filename REPORT_FILENAME
filename to save vulnerability report as
report-append append to report file if it exists
report-indent REPORT_INDENT
indent level for vulnerability report json
label LABEL friendly name field to include in vulnerability report
Scans with the arachni command-line scanner path PATH path to scanner binary
Scans with the scnr command-line scanner path PATH path to scanner binary
Scans with the wapiti command-line scanner path PATH path to scanner binary