
CVE-2026-5147用のエクスプロイトスクリプト。MySQLインターフェースに対してブールベースおよび時間ベースのブラインドSQLインジェクションを実行し、バージョン、データベース、スキーマ、データを抽出します。キャリブレーション、ダンプサブコマンド、設定可能なペイロードを含みます。
認可済みの脆弱性検証とラボ演習を対象:SQL インジェクションが存在するエンドポイントに対して MySQL ブールベース盲注(EXP / INSTR または ASCII)と時間ベース盲注(if + ascii + sleep)を実行し、オプションでバージョン、データベース名、テーブル構造、データを取得します(sqlmap の --dump に類似)。
未認可のシステムでは使用しないでください。
pip install requests
CURRENT_USER + プローブを2回送信し、レスポンス JSON 内のビジネスフィールド(デフォルト )で「真 / 偽」ブランチを判別します。INSTRcode-p instr または ascii)を使用します。--skip-calibrate:上記の較正をスキップします。それでもブール + JSON フィールドで解読を続行し、時間ベースへの自動切り替えは行いません(ローカルデバッグに適しています)。「真」と判定する JSON フィールド名と値は --json-code-field、--json-code-true で調整できます(ターゲット API と一致させる必要があります)。
# ドメインのみ:デフォルトパスを連結(スクリプト内の DEFAULT_API_PATH を参照)
python cve-2026-5147.py -u target.example.com
# HTTPS、カスタムパス、注入パラメータ名を指定
python cve-2026-5147.py -u target.example.com --https --path /api/foo --param id
# 全データベースのダンプ(リクエスト量が非常に多いため注意)
python cve-2026-5147.py -u target.example.com dump
# テーブル名のみ取得し、データはエクスポートしない
python cve-2026-5147.py -u target.example.com dump --schema-only
進捗と診断情報は stderr、最終サマリーは stdout に出力されます。
| パラメータ | 説明 |
|---|---|
-u / --url | ターゲット(ドメイン、host:port、または完全な URL)、必須 |
--path | パス未指定時にホストの後に連結するパス(デフォルトはテナント系 API パス) |
--https | scheme 未指定時に https を使用(デフォルトは http:// を補完) |
--param | 注入パラメータ名(デフォルト website) |
-p / --payload | ブールフラグメント:instr または ascii(時間ベース盲注は固定で if+ascii+sleep) |
--timeout | HTTP タイムアウト(秒);時間ベース盲注に入ると自動的に sleep+5 以上になります |
--sleep | 時間ベース盲注の sleep() 秒数 |
--time-floor | 真と判定:総所要時間 ≥ この値(秒);デフォルト約 sleep - 1 |
--json-code-field / --json-code-true | ブールサイドチャネルで読み取る JSON フィールドと「真」の値 |
--skip-calibrate | プローブ較正をスキップ |
--only | version / database / both:バージョンのみ、データベース名のみ、または両方を取得 |
-H / -P | 追加リクエストヘッダー、追加クエリパラメータ、繰り返し指定可能 |
dump サブコマンドには他に --schema-only、--dump-out、--dump-row-limit、--dump-select などがあります。詳細は python cve-2026-5147.py -h を参照してください。
| サブコマンド | 意味 |
|---|---|
info(デフォルト) | VERSION()、現在のデータベース名 DATABASE() を取得(--only の影響を受けます) |
dump | さらに現在のデータベースのテーブル名、各テーブルの列名と行データを取得(または schema のみ、--schema-only を参照) |
main() で最初に calibrate_sqli_oracle を実行し、失敗した場合は effective_detect = "time" として bind_time_payload を実行します。時間モードではさらに calibrate_time_oracle を実行します。--json-code-field と整合しています(code のハードコードは廃止)。command の argparse ヘルプは、デフォルトのサブコマンドが info であるように修正済みです(dump ではありません)。このスクリプトはセキュリティ研究と認可テスト専用です。利用者は現地の法律とターゲット環境の認可範囲を遵守することを自らの責任で確認する必要があります。