
Strumento da riga di comando per scansionare i risultati di Google alla ricerca di vulnerabilità

Scansiona i risultati di ricerca di Google (o altri) per vulnerabilità.
dorkbot è uno strumento modulare da riga di comando per eseguire scansioni di vulnerabilità su gruppi di pagine web restituiti da query di ricerca di Google o altre fonti supportate. È suddiviso in due gruppi di moduli:
I target sono archiviati in un database man mano che vengono indicizzati. Una volta scansionati, viene prodotto un report JSON standard contenente le vulnerabilità trovate. I processi di indicizzazione e scansione possono essere eseguiti separatamente o combinati in un unico comando (fino a uno di ciascun tipo).
$ 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 Mostra l'aiuto del programma (o del modulo specificato)
--show-defaults Mostra i valori predefiniti nell'output di aiuto
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]
[--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[--list-sources] [--add-target TARGET]
[--delete-target TARGET] [--flush-targets] [-m] [-e]
[--list-blocklist] [--add-blocklist-item ITEM]
[--delete-blocklist-item ITEM] [--flush-blocklist]
[-b EXTERNAL_BLOCKLIST]
options:
-c, --config CONFIG File di configurazione
-r, --directory DIRECTORY
Directory di Dorkbot (posizione predefinita di db, strumenti,
report)
--source [SOURCE] Etichetta associata ai target
--show-defaults Mostra i valori predefiniti nell'output di aiuto
-h, --help Mostra l'aiuto del programma (o del modulo specificato)
--log LOG Percorso del file di log
-v, --verbose Abilita log dettagliati (può essere usato più volte per
aumentare la verbosità)
-V, --version Stampa la versione
retrieval:
--count COUNT numero di target da recuperare (0/non impostato = tutti)
--random recupera i target in ordine casuale
database:
-d, --database DATABASE
File/URI del database
-u, --prune Applica fingerprinting e blocklist senza scansione
--drop-tables Elimina e ricrea le tabelle
--retries RETRIES Numero di tentativi in caso di fallimento di un'operazione
--retry-on RETRY_ON Stringhe di errore che dovrebbero causare un nuovo tentativo (può essere
usato più volte)
--show-stats Mostra il conteggio totale/non scansionato e il conteggio delle impronte
targets:
-l, --list-targets Elenca i target nel database
-n, --unscanned-only Includi solo target non scansionati
--list-sources Elenca le fonti nel database
--add-target TARGET Aggiungi un URL al database dei target
--delete-target TARGET
Elimina un URL dal database dei target
--flush-targets Elimina tutti i target
-m, --delete-on-match
Elimina il target se corrisponde a un elemento della blocklist
-e, --delete-on-error
Elimina il target se si verifica un errore durante l'elaborazione
indexing:
-i, --indexer INDEXER
Modulo indicizzatore da utilizzare
-o, --indexer-arg INDEXER_ARG
Passa un argomento al modulo indicizzatore (può essere
usato più volte)
scanning:
-s, --scanner SCANNER
Modulo scanner da utilizzare
-p, --scanner-arg SCANNER_ARG
Passa un argomento al modulo scanner (può essere
usato più volte)
-t, --test Recupera il prossimo target scansionabile ma non lo segna come scansionato
-x, --reset-scanned Reimposta lo stato di scansione di tutti i target
--mark-unscanned MARK_UNSCANNED
Reimposta lo stato di scansione del target specificato
fingerprints:
-g, --generate-fingerprints
Genera impronte per tutti i target
-f, --flush-fingerprints
Elimina tutte le impronte generate
--fingerprint-max FINGERPRINT_MAX
Numero massimo di corrispondenze per impronta prima di eliminare le nuove
corrispondenze
blocklist:
--list-blocklist Elenca le voci della blocklist interna
--add-blocklist-item ITEM
Aggiungi un modello IP/host/regex alla blocklist interna
--delete-blocklist-item ITEM
Elimina un elemento dalla blocklist interna
--flush-blocklist Elimina tutti gli elementi della blocklist interna
-b, --external-blocklist EXTERNAL_BLOCKLIST
File/db blocklist esterno supplementare (può essere
usato più volte)
Driver del database:
Scanner:
Se necessario, dorkbot cerca gli strumenti nel seguente ordine:
Tutti i database SQLite, gli strumenti e i report vengono salvati nella directory di dorkbot, che per impostazione predefinita è la directory corrente. Puoi forzare una directory specifica con il flag --directory. I percorsi dei file predefiniti all'interno di questa directory sono i seguenti:
I file di configurazione vengono letti per impostazione predefinita da ~/.config/dorkbot/ (Linux / MacOS) o nella cartella Dati applicazioni (Windows), onorando $XDG_CONFIG_HOME / %APPDATA%. I percorsi dei file predefiniti all'interno di questa directory sono i seguenti:
Il file di configurazione (dorkbot.ini) può essere utilizzato per precompilare determinati flag della riga di comando.
Esempio 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
Il database dei target memorizza gli URL da scansionare e le fonti da cui provengono. Tiene traccia dello stato di scansione di ciascun URL costruendo un elenco di impronte per ogni pagina + insieme di parametri univoci e confrontando i nuovi target con le impronte esistenti. Le impronte devono essere generate solo una volta e verranno generate su richiesta secondo necessità. Le impronte e lo stato di scansione possono essere reimpostati indipendentemente.
Indirizzi del database supportati:
Nota che per i database dei target SQLite il protocollo è opzionale (è ancora richiesto per le blocklist esterne). Inoltre, la funzionalità in-memory di SQLite può essere utilizzata per evitare completamente la scrittura su disco specificando un indirizzo del database di ":memory:".
La blocklist è un elenco di indirizzi IP, nomi host o espressioni regolari di pattern di URL che non devono essere scansionati. Se un URL target corrisponde a qualsiasi elemento di questo elenco, verrà saltato e rimosso dal database. La blocklist interna è mantenuta nel database di dorkbot, ma è possibile specificare un file o database separato passando il percorso del file appropriato o l'URI di connessione a --external-blocklist. I target vengono confrontati prima con la blocklist interna e poi, opzionalmente, con eventuali blocklist esterne fornite.
Blocklist esterne supportate:
Elementi esempio della blocklist:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
Il primo elemento rimuoverà qualsiasi target che non contiene un punto interrogativo, in altre parole qualsiasi URL che non contiene parametri GET da testare. Il secondo cerca di evitare funzioni di login, e il terzo blocca tutti gli URL target su example.com. Il quarto esclude target con hostname www.google.com e il quinto esclude target il cui host si risolve in 127.0.0.1.
Il flag di potatura scorre tutti i target, calcola le impronte e segna come scansionati i target successivi corrispondenti. Segna anche come scansionate le corrispondenze della blocklist. Il risultato è un database in cui --list-targets --unscanned-only restituisce solo URL scansionabili. Onora il flag random per elaborare le impronte in ordine casuale e il flag unscanned-only per saltare i target già scansionati che hanno già necessariamente impronte. Il controllo della blocklist onora --delete-on-match per eliminare il target anziché segnarlo come scansionato, e --delete-on-error per eliminare qualsiasi voce che non riesce a analizzare un hostname valido o a risolvere l'hostname in indirizzo IP.
Queste opzioni sono applicabili indipendentemente dal modulo scelto:
--source [SOURCE] Etichetta associata ai target --count COUNT numero di URL da recuperare/scansionare, o -1 per tutti --random recupera gli URL in ordine casuale
Inoltre, le opzioni relative alla blocklist --delete-on-match / --delete-on-error faranno sì che i target corrispondenti o errati vengano saltati.
http-retries RETRIES numero di tentativi per recuperare i risultati in caso di errore threads THREADS numero di richieste concorrenti a commoncrawl.org
Cerca su bing.com key KEY Chiave API query QUERY Query di ricerca
Cerca nei dati di scansione di commoncrawl.org domain DOMAIN Recupera tutti i risultati per un dato dominio o sottodominio index INDEX Cerca un indice specifico filter FILTER Filtro della query da applicare alla ricerca page-size PAGE_SIZE Numero di risultati da richiedere per pagina
Cerca su google.com key KEY Chiave API engine ENGINE ID CSE query QUERY Query di ricerca domain DOMAIN Limita le ricerche al dominio specificato
Cerca nei dati di scansione di un dato server pywb
server SERVER URL del server pywb
domain DOMAIN Recupera tutti i risultati per un dato dominio o sottodominio
cdx-api-suffix CDX_API_SUFFIX
Suffisso dopo l'indice per l'API dell'indice
index INDEX Cerca un indice specifico
field FIELD Campo (fl) da interrogare
filter FILTER Filtro della query da applicare alla ricerca
page-size PAGE_SIZE
Numero di risultati da richiedere per pagina
Accetta URL da stdin, uno per riga
Cerca nei dati di scansione di archive.org domain DOMAIN Recupera tutti i risultati per un dato dominio o sottodominio filter FILTER Filtro della query da applicare alla ricerca page-size PAGE_SIZE Numero di risultati da richiedere per pagina from FROM Timestamp di inizio to TO Timestamp di fine
args ARGS Elenco di argomenti aggiuntivi separati da spazi
report-dir REPORT_DIR
Directory in cui salvare il file di report
report-filename REPORT_FILENAME
Nome file per salvare il report delle vulnerabilità
report-append Aggiungi al file di report se esiste
report-indent REPORT_INDENT
Livello di indentazione per il json del report delle vulnerabilità
label LABEL Campo nome amichevole da includere nel report delle vulnerabilità
Scansiona con lo scanner da riga di comando arachni path PATH Percorso del binario dello scanner
Scansiona con lo scanner da riga di comando scnr path PATH Percorso del binario dello scanner
Scansiona con lo scanner da riga di comando wapiti path PATH Percorso del binario dello scanner