
go-exploitで使用するHTTPキャッシュデータベースを生成するためのユーティリティ
go-exploit-cache は、go-exploit フレームワークがクロスエクスプロイト共有とスキャンレスなターゲット検証を可能にするために使用する HTTP キャッシュ SQLite データベースを構築します。go-exploit はターゲットに能動的に接続する代わりに、キャッシュを参照して、以前に収集された HTTP データ (Shodan、Censys、PCAP、RunZero など) を使用してバージョンチェックやその他のスキャンを実行できます。
プロジェクト:
vulncheck-oss/go-exploit
このツールは、go-exploitが読み取る SQLite キャッシュを生成します。
go-exploit がスキャンレス検証とバージョンチェックに使用する SQLite http_cache を生成します。.json.gz、RunZero JSONL (および限定的な RunZero JSON1)、PCAP/pcapng、Censys JSONL (ヘルパースクリプト経由)。.json.gzcensys/censys_v3_dump.py を使用)go-exploit が利用できる SQLite DB を生成します詳細は USAGE.md を参照してください。
./build/go-exploit-cache \
-type shodan-gzip \
-in ~/Downloads/734342e9-56b8-4299-a072-9d1d28f66434.json.gz \
-out confluence.db
典型的な出力:
Decompressing the Shodan GZIP... this can be slow
Decompressed file written to .tmp/shodan.json
Generating database entries...
Cleaning up .tmp directory
DB を検査する:
sqlite3 confluence.db
sqlite> select rhost, rport from http_cache limit 1;
52.200.210.54|80
キャッシュされたデータのみを使用してターゲットを検証できます。この例では unshare -n を使用してネットワークアクセスをブロックしています (デモ専用 — unshare は必須ではありません):
sudo unshare -n ./build/cve-2023-22527_linux-arm64 \
-c -v -rhost 52.200.210.54 -rport 80 \
-db ~/go-exploit-cache/confluence.db
出力例:
time=... level=STATUS msg="Starting target" host=52.200.210.54 port=80
time=... level=STATUS msg="Validating Confluence target"
time=... level=SUCCESS msg="Target verification succeeded!"
time=... level=VERSION msg="The reported version is 7.19.17"
time=... level=STATUS msg="The target appears to be a patched version." vulnerable=no
shodan-gzip — Shodan .json.gz エクスポートrunzero-jsonl — RunZero JSONL (限定的な JSON1 サポート)pcap / pcapng — PCAP ファイル (HTTP トラフィックを抽出)censys-jsonl — Censys JSONL (censys/ 内のヘルパースクリプトを使用)サンプルファイルについては test/testdata を参照してください。
censys_v3_dump.py を作成しました。これは Censys Platform の検索クエリを受け付け、HTTP ヘッダーと完全な HTTP ボディにアクセスするために個々のホストをダウンロードします。Censys の結果を収集し、取り込みに適した JSONL にフォーマットするには censys/censys_v3_dump.py を使用してください。http_cache — メインテーブル (キャッシュ生成テーブル)
| column | type | description |
|---|---|---|
| id | INTEGER | primary key |
| created | INTEGER | date |
| rhost | TEXT | remote host (IP) |
| rport | INT | remote port |
| uri | TEXT | the cached path |
| data | BLOB | HTTP headers + body |
verified — ソフトウェア記述テーブル (go-exploit がデータを格納するテーブル)
| column | type | description |
|---|---|---|
| id | INTEGER | primary key |
| created | INTEGER | date |
| software name | TEXT | Name of software |
| installed | INT | 0 or 1 |
| version | TEXT | The software version |
| rhost | TEXT | remote host (IP) |
| rport | INT | remote port |
Ubuntu の場合:
sudo apt install libpcap-dev
make
(Go ツールチェーンが必要です — https://go.dev/doc/install を参照してください。)