
コマンドラインツールで、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に解決されるターゲットを除外します。