Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
keycloak-saml-redirect-param-split — PoC di loopback per una vulnerabilità del broker SAML di Keycloak 26.8.1: un nome SAMLResponse duplicato con codifica percentuale aggira la verifica della firma di reindirizzamento, consentendo l'accesso come un altro utente. | Kitploit
Strumenti/GitHubGitHub/abraxas/keycloak-saml-redirect-param-split
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebGestione Identità e Accessi (IAM)AutenticazioneLab e Pratica
GitHubabraxas/keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

PoC di loopback per una vulnerabilità del broker SAML di Keycloak 26.8.1: un nome SAMLResponse duplicato con codifica percentuale aggira la verifica della firma di reindirizzamento, consentendo l'accesso come un altro utente.

Vedi Repository
111 giorno 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

Abraxas Labs - keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

Chi non ha un account Keycloak può completare il login SAML aziendale come un'altra persona. Effettua l'accesso una volta presso l'identity provider upstream, conserva quel redirect firmato e antepone un secondo documento SAML sotto un nome codificato in percentuale. Keycloak verifica la firma autentica e poi effettua l'accesso con il nome presente nel documento falsificato. Questo richiede un broker SAML che firmi le risposte HTTP-Redirect, con la validazione della firma attiva e le firme delle assertion disattivate, che è ciò che configura l'importazione dei metadati. Non è la suddivisione tramite punto e virgola della issue #53354.

Classe: OAuth leftover Portata: Remota (non autenticato verso Keycloak; richiede un broker SAML che firmi i redirect)

Keycloak 26.8.1 (24ed1dad) - Red Hat

IDnessuna CVE al momento
ClasseOAuth leftover
PortataRemota (nessun account Keycloak; richiede una firma HTTP-Redirect autentica dall'IdP)
CWECWE-287 / CWE-347 / CWE-116
CVSSAlto: 7.4 CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
ProdottoKeycloak
Affetto26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b); Quarkus 3.40.1; immagine quay.io/keycloak/keycloak:26.8.1
Authnessuna su Keycloak. Richiede un broker identity-provider SAML con validateSignature=true e wantAssertionsSigned assente o false.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1:18084

Cosa può fare un attaccante

Richiede il NameID della vittima (di solito un'email) e un redirect HTTP-Redirect realmente firmato da quell'IdP. Non richiede una password Keycloak. Non richiede una casella di posta. Un IdP solo POST non fornisce quella firma. L'ACS GET resta montato anche quando l'importazione dei metadati preferisce POST.

PrivilegioMetodo / sinkRecon / integrità / disponibilitàProvato in lab o dedotto
Associare un documento SAML falsificato mentre la firma autentica viene comunque verificataACS del broker GET con SAML%52esponse=<forged> prima del SAMLResponse firmatoIntegrità (autenticazione)Provato in lab. Email di controllo [email protected]. Email dell'attacco [email protected]
Creare l'utente vittima tramite first-broker-logincallback.authenticated sul NameID falsificatoIntegrità (creazione account)Provato in lab. Conteggio vittime 0 prima della query suddivisa, 1 dopo
Sessione come utente esistente brokerato, incluso un admin che usa lo stesso IdPStesso ACS, NameID di quell'utenteIntegrità (compromissione account)Dedotto. Il lab ha creato la vittima al primo login
Mantenere RelayState e la sessione di autenticazioneRelayState resta il valore firmatoIntegritàSorgente. La firma copre RelayState
Controllo negativoRedirect firmato autentico, nessun parametro aggiuntivon/dProvato in lab. Il controllo termina con l'email dell'attaccante

Resta chiuso su questo leftover

AsseMetodo / sinkPerché è chiuso
IntegritàSuddivisione con punto e virgola SAMLResponse=...;SAMLResponse=...issue #53354. quarkus.http.use-semicolon-as-query-param-delimiter=false
IntegritàAssertion non firmata quando wantAssertionsSigned=truehandleLoginResponse richiede quindi una firma dell'assertion
IntegritàNessun broker SAML, o IdP solo POST senza firma del redirectL'attaccante non ottiene mai SigAlg + Signature su una GET
IntegritàRCE sull'host, Admin REST non autenticatoFuori classe
IntegritàForma del nome predefinita VERIFY_PROFILEProvato in lab come passaggio di completamento, non come confutazione. Il form contiene già l'email brokerata

Come l'ho trovato

Ho fissato Keycloak 26.8.1. RESTEasy Reactive prende @QueryParam("SAMLResponse") da Vert.x, che decodifica percentualmente i nomi dei parametri di query, quindi SAML%52esponse collassa su SAMLResponse e vince il primo valore. verifyRedirectSignature ricostruisce la stringa firmata da getQueryParameters(false) sulla query grezza, dove quel nome resta una chiave diversa.

Vicoli ciechi già registrati: trattare #53354 come questo residuo (nome percent-encoded, non punto e virgola); seguire i 302 dell'ACS nel client di laboratorio e perdere AUTH_SESSION_ID; leggere firstName/lastName vuoti su VERIFY_PROFILE come un mancato riscontro (l'email è già il NameID intermediato); una reverse shell. Teatro.

Lab

Python 3.11+ con cryptography. Docker richiesto.

python3 keycloak-saml-redirect-param-split-Abraxas-Labs.py

o:

cd lab
./run.sh

Prendi di mira solo http://127.0.0.1:18084. Immagine quay.io/keycloak/keycloak:26.8.1. Il launcher esegue chdir in lab/ ed esegue run.sh. L'IdP del lab è in-process. Non comunica mai con un vero identity provider.

IOC image=quay.io/keycloak/keycloak:26.8.1 label-version=26.8.1
IOC serverinfo-version=26.8.1
IOC validate-signature=true want-assertions-signed=absent
IOC review-profile=DISABLED
IOC [email protected]
IOC victim-before=0
IOC [email protected]
IOC victim-after=1
SUCCESS KC-H04-SAML-REDIRECT kcs04b8n1

La correzione

Verificare lo stesso documento di query che l'endpoint analizza. Decodificare percentualmente i nomi dei parametri prima della ricostruzione della firma, oppure rifiutare una query che contiene più di un SAMLResponse dopo la decodifica. Attivare wantAssertionsSigned per i broker di redirect, incluso il percorso di importazione dei metadati.

Riferimenti

  • github.com/keycloak/keycloak tag 26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b)
  • SAMLEndpoint.redirectBinding (SAMLEndpoint.java:182-183, :779-813, :896-914)
  • SamlProtocolUtils.verifyRedirectSignature (SamlProtocolUtils.java:216-249)
  • KeycloakUriInfo.getQueryParameters (KeycloakUriInfo.java:147-163)
  • Correlato (non questo percorso): issue #53354 suddivisione su punto e virgola
  • CWE-287 · CWE-347 · CWE-116

Licenza

GNU Affero GPL v3.0. Vedere LICENSE. Solo laboratorio su loopback. Nessuna garanzia.

Abraxas Labs [email protected]

Si prega di attribuire il CVE ad Abraxas Labs.

Scarica lo strumento