
コマンドラインツールで、Google検索結果から脆弱性をスキャンする

Google(または他の)検索結果に対する脆弱性スキャンを行います。
dorkbotは、Google検索クエリやその他のサポートされているソースによって返されたWebページのセットに対して脆弱性スキャンを実行するためのモジュール式コマンドラインツールです。2つのモジュールセットで構成されています:
ターゲットはインデックス化されるとデータベースに保存されます。スキャン後、見つかった脆弱性を含む標準JSONレポートが生成されます。インデックス化とスキャンのプロセスは、別々に実行することも、単一のコマンドで組み合わせて実行することもできます(それぞれ最大1つ)。
$ 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)
データベースドライバー:
スキャナー:
必要に応じて、dorkbotは以下の順序でツールを検索します:
すべてのSQLiteデータベース、ツール、レポートは、デフォルトではカレントディレクトリであるdorkbotディレクトリに保存されます。--directory フラグを使用して特定のディレクトリを強制できます。このディレクトリ内のデフォルトのファイルパスは以下のとおりです:
設定ファイルは、デフォルトでは Linux / MacOS の場合は ~/.config/dorkbot/ から、Windows の場合は Application Data フォルダから読み取られ、$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のスキャン状況を追跡します。フィンガープリントは1回生成するだけでよく、必要に応じてオンデマンドで生成されます。フィンガープリントとスキャン状況は独立してリセットできます。
サポートされているデータベースアドレス:
SQLiteターゲットデータベースの場合、プロトコルはオプションです(外部ブロックリストでは引き続き必要です)。さらに、SQLiteのインメモリ機能を使用して、データベースアドレスに ":memory:" を指定することで、ディスクへの書き込みを完全に回避できます。
ブロックリストは、スキャンすべきでないURLパターンのIPアドレス、ホスト名、または正規表現のリストです。ターゲットURLがこのリストの項目に一致する場合、そのターゲットはスキップされ、データベースから削除されます。内部ブロックリストはdorkbotデータベース内に保持されますが、別のファイルやデータベースを --external-blocklist に適切なファイルパスまたは接続URIを渡すことで指定できます。ターゲットは最初に内部ブロックリストと照合され、次にオプションで提供された外部ブロックリストと照合されます。
サポートされている外部ブロックリスト:
ブロックリスト項目の例:
regex:^[^\?]+$ regex:.*login.* regex:^https?://[^.]*.example.com/.* host:www.google.com ip:127.0.0.1
最初の項目はクエスチョンマークを含まないターゲット、つまりテストするGETパラメータを含まないURLを削除します。2番目はログイン機能を回避しようとし、3番目はexample.com上のすべてのターゲットURLをブロックリストに追加します。4番目はホスト名がwww.google.comのターゲットを除外し、5番目はホストが127.0.0.1に解決されるターゲットを除外します。
プルーンフラグはすべてのターゲットを反復処理し、フィンガープリントを計算し、後続の一致するターゲットをスキャン済みとしてマークします。また、ブロックリストに一致するものもスキャン済みとしてマークします。結果として、--list-targets --unscanned-only を実行するとスキャン可能なURLのみが返されるデータベースになります。これは random フラグを尊重してフィンガープリントをランダムな順序で処理し、unscanned-only フラグを尊重してすでにフィンガープリントを持つスキャン済みターゲットをスキップします。ブロックリストチェックは --delete-on-match を尊重してターゲットをスキャン済みとしてマークする代わりに削除し、--delete-on-error を尊重して有効なホスト名の解析やホスト名のIPアドレスへの解決に失敗したエントリを削除します。
これらのオプションは、選択したモジュールに関係なく適用されます:
--source [SOURCE] Label associated with targets --count COUNT number of urls to retrieve/scan, or -1 for all --random retrieve urls in random order
さらに、ブロックリスト関連のオプション --delete-on-match / --delete-on-error により、一致するターゲットやエラーのあるターゲットがスキップされます。
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