
Ferramenta de linha de comando para escanear resultados de pesquisa do Google em busca de vulnerabilidades.

Digitalizar resultados de pesquisa do Google (ou outro) em busca de vulnerabilidades.
dorkbot é uma ferramenta modular de linha de comando para realizar varreduras de vulnerabilidades em conjuntos de páginas web retornados por consultas de pesquisa do Google ou outras fontes compatíveis. Ele é dividido em dois conjuntos de módulos:
Os alvos são armazenados em um banco de dados à medida que são indexados. Uma vez digitalizados, um relatório JSON padrão é produzido contendo quaisquer vulnerabilidades encontradas. Os processos de indexação e digitalização podem ser executados separadamente ou combinados em um único comando (no máximo um de cada).
$ pip3 install dorkbot wapiti3
$ dorkbot -i google_api -o key=sua_credencial_api_aqui -o engine=seu_id_mecanismo_aqui -o query="filetype:php inurl:id"
$ dorkbot -s wapiti
-h, --help Mostrar ajuda do programa (ou módulo especificado)
--show-defaults Mostrar valores padrão na saída de ajuda
usage: dorkbot [-c CONFIG] [-r DIRETÓRIO] [--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]
[-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]
opções:
-c, --config CONFIG Arquivo de configuração
-r, --directory DIRETÓRIO
Diretório do Dorkbot (localização padrão do db, ferramentas,
relatórios)
--source [SOURCE] Rótulo associado aos alvos
--show-defaults Mostrar valores padrão na saída de ajuda
-h, --help Mostrar ajuda do programa (ou módulo especificado)
--log LOG Caminho para o arquivo de log
-v, --verbose Ativar registro detalhado (pode ser usado várias vezes para
aumentar a verbosidade)
-V, --version Imprimir versão
recuperação:
--count COUNT número de alvos a recuperar (0/não definido = todos)
--random recuperar alvos em ordem aleatória
banco de dados:
-d, --database DATABASE
Arquivo/uri do banco de dados
-u, --prune Aplicar impressão digital e lista de bloqueio sem digitalizar
--drop-tables Excluir e recriar tabelas
--retries RETRIES Número de tentativas quando uma operação falha
--retry-on RETRY_ON Strings de erro que devem resultar em uma nova tentativa (podem ser
usadas várias vezes)
--show-stats Mostrar a contagem total/não digitalizada de alvos e impressões digitais
alvos:
-l, --list-targets Listar alvos no banco de dados
-n, --unscanned-only Incluir apenas alvos não digitalizados
--list-sources Listar fontes no banco de dados
--add-target TARGET Adicionar uma url ao banco de dados de alvos
--delete-target TARGET
Deletar uma url do banco de dados de alvos
--flush-targets Excluir todos os alvos
-m, --delete-on-match
Excluir alvo se corresponder a um item da lista de bloqueio
-e, --delete-on-error
Excluir alvo se ocorrer erro ao processá-lo
indexação:
-i, --indexer INDEXER
Módulo indexador a usar
-o, --indexer-arg INDEXER_ARG
Passar um argumento para o módulo indexador (pode ser usado
várias vezes)
digitalização:
-s, --scanner SCANNER
Módulo scanner a usar
-p, --scanner-arg SCANNER_ARG
Passar um argumento para o módulo scanner (pode ser usado
várias vezes)
-t, --test Buscar próximo alvo digitalizável, mas não marcá-lo como digitalizado
-x, --reset-scanned Redefinir status de digitalizado de todos os alvos
--mark-unscanned MARK_UNSCANNED
Redefinir status de digitalizado de um determinado alvo
impressões digitais:
-g, --generate-fingerprints
Gerar impressões digitais para todos os alvos
-f, --flush-fingerprints
Excluir todas as impressões digitais geradas
--fingerprint-max FINGERPRINT_MAX
Máximo de correspondências por impressão digital antes de excluir novas
correspondências
lista de bloqueio:
--list-blocklist Listar entradas internas da lista de bloqueio
--add-blocklist-item ITEM
Adicionar um padrão ip/host/regex à lista de bloqueio interna
--delete-blocklist-item ITEM
Excluir um item da lista de bloqueio interna
--flush-blocklist Excluir todos os itens da lista de bloqueio interna
-b, --external-blocklist EXTERNAL_BLOCKLIST
Arquivo/db suplementar de lista de bloqueio externa (pode ser usado
várias vezes)
Drivers de banco de dados:
Scanners:
Conforme necessário, o dorkbot pesquisará ferramentas na seguinte ordem:
Todos os bancos de dados SQLite, ferramentas e relatórios são salvos no diretório dorkbot, que por padrão é o diretório atual. Você pode forçar um diretório específico com a flag --directory. Os caminhos de arquivo padrão dentro deste diretório são os seguintes:
Por padrão, os arquivos de configuração são lidos de ~/.config/dorkbot/ (Linux / MacOS) ou na pasta Application Data (Windows), respeitando $XDG_CONFIG_HOME / %APPDATA%. Os caminhos de arquivo padrão dentro deste diretório são os seguintes:
O arquivo de configuração (dorkbot.ini) pode ser usado para pré-popular certas flags de linha de comando.
Exemplo 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
O banco de dados de alvos armazena urls a serem digitalizadas e as fontes de onde vieram. Ele rastreia o status de digitalização de cada url construindo uma lista de impressões digitais para cada página + conjunto de parâmetros único e comparando novos alvos com as impressões digitais existentes. As impressões digitais só precisam ser geradas uma vez e serão geradas sob demanda conforme necessário. As impressões digitais e o status de digitalização podem ser redefinidos de forma independente.
Endereços de banco de dados suportados:
Observe que para bancos de dados de alvos SQLite, o protocolo é opcional (ainda é obrigatório para listas de bloqueio externas). Além disso, o recurso de memória do SQLite pode ser usado para evitar escrever no disco completamente, especificando um endereço de banco de dados ":memory:".
A lista de bloqueio é uma lista de endereços ip, nomes de host ou expressões regulares de padrões de url que não devem ser digitalizados. Se uma url alvo corresponder a qualquer item nesta lista, ela será ignorada e removida do banco de dados. A lista de bloqueio interna é mantida no banco de dados dorkbot, mas um arquivo ou banco de dados separado pode ser especificado passando o caminho do arquivo apropriado ou uri de conexão para --external-blocklist. Os alvos são correspondidos primeiro contra a lista de bloqueio interna e, em seguida, opcionalmente contra quaisquer listas de bloqueio externas fornecidas.
Listas de bloqueio externas suportadas:
Exemplos de itens da lista de bloqueio:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
O primeiro item removerá qualquer alvo que não contenha um ponto de interrogação, em outras palavras, qualquer url que não contenha parâmetros GET para testar. O segundo tenta evitar funções de login, e o terceiro bloqueia todas as urls alvo em example.com. O quarto exclui alvos com um nome de host www.google.com e o quinto exclui alvos cujo host resolve para 127.0.0.1.
A flag de poda itera por todos os alvos, calcula as impressões digitais e marca os alvos correspondentes subsequentes como digitalizados. Também marca correspondências da lista de bloqueio como digitalizadas. O resultado é um banco de dados onde --list-targets --unscanned-only retorna apenas urls digitalizáveis. Ele respeita a flag random para processar impressões digitais em ordem aleatória e a flag unscanned-only para pular alvos já digitalizados que necessariamente já possuem impressões digitais. A verificação da lista de bloqueio respeita --delete-on-match para excluir o alvo em vez de marcá-lo como digitalizado, e --delete-on-error para excluir qualquer entrada que falhe ao analisar um nome de host válido ou resolver o nome de host para endereço ip.
Estas opções são aplicáveis independentemente do módulo escolhido:
--source [SOURCE] Rótulo associado aos alvos --count COUNT número de urls para recuperar/digitalizar, ou -1 para todos --random recuperar urls em ordem aleatória
Além disso, as opções relacionadas à lista de bloqueio --delete-on-match / --delete-on-error farão com que alvos correspondentes ou com erro sejam ignorados.
http-retries RETRIES número de vezes para tentar novamente buscar resultados em caso de erro threads THREADS número de solicitações simultâneas para commoncrawl.org
Pesquisa bing.com key KEY Chave da API query QUERY consulta de pesquisa
Pesquisa dados de rastreamento commoncrawl.org domain DOMAIN obter todos os resultados para um determinado domínio ou subdomínio index INDEX pesquisar um índice específico filter FILTER filtro de consulta a ser aplicado à pesquisa page-size PAGE_SIZE número de resultados a solicitar por página
Pesquisa google.com key KEY Chave da API engine ENGINE ID do CSE query QUERY consulta de pesquisa domain DOMAIN limitar pesquisas a um domínio especificado
Pesquisa dados de rastreamento de um determinado servidor pywb
server SERVER url do servidor pywb
domain DOMAIN obter todos os resultados para um determinado domínio ou subdomínio
cdx-api-suffix CDX_API_SUFFIX
sufixo após o índice para api do índice
index INDEX pesquisar um índice específico
field FIELD campo (fl) a consultar
filter FILTER filtro de consulta a ser aplicado à pesquisa
page-size PAGE_SIZE
número de resultados a solicitar por página
Aceita urls da entrada padrão, uma por linha
Pesquisa dados de rastreamento archive.org domain DOMAIN obter todos os resultados para um determinado domínio ou subdomínio filter FILTER filtro de consulta a ser aplicado à pesquisa page-size PAGE_SIZE número de resultados a solicitar por página from FROM timestamp de início to TO timestamp de fim
args ARGS lista delimitada por espaços de argumentos adicionais
report-dir REPORT_DIR
diretório para salvar o arquivo de relatório
report-filename REPORT_FILENAME
nome do arquivo para salvar o relatório de vulnerabilidade como
report-append anexar ao arquivo de relatório se ele existir
report-indent REPORT_INDENT
nível de indentação para o json do relatório de vulnerabilidade
label LABEL campo de nome amigável a ser incluído no relatório de vulnerabilidade
Digitaliza com o scanner de linha de comando arachni path PATH caminho para o binário do scanner
Digitaliza com o scanner de linha de comando scnr path PATH caminho para o binário do scanner
Digitaliza com o scanner de linha de comando wapiti path PATH caminho para o binário do scanner