Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
keycloak-saml-redirect-param-split — PoC de bucle local para una falla del broker SAML de Keycloak 26.8.1: un nombre SAMLResponse duplicado con codificación porcentual omite la verificación de firma de redirección, permitiendo iniciar sesión como otro usuario. | Kitploit
Herramientas/GitHubGitHub/abraxas/keycloak-saml-redirect-param-split
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebGestión de Identidad y Acceso (IAM)AutenticaciónLabs y Práctica
GitHubabraxas/keycloak-saml-redirect-param-split

keycloak-saml-redirect-param-split

PoC de bucle local para una falla del broker SAML de Keycloak 26.8.1: un nombre SAMLResponse duplicado con codificación porcentual omite la verificación de firma de redirección, permitiendo iniciar sesión como otro usuario.

Ver Repositorio
11hace 1 díaAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

keycloak-saml-redirect-param-split

Alguien sin cuenta de Keycloak puede completar el inicio de sesión SAML de una empresa como otra persona. Inicia sesión una vez en el proveedor de identidad upstream, conserva esa redirección firmada y coloca un segundo documento SAML delante de ella bajo un nombre codificado en porcentaje. Keycloak verifica la firma legítima y luego inicia sesión con el nombre del documento falsificado. Esto requiere un broker SAML que firme respuestas HTTP-Redirect, con la validación de firma activada y las firmas de aserción desactivadas, que es lo que configura la importación de metadatos. No es el split por punto y coma de la issue #53354.

Clase: OAuth leftover Alcance: Remoto (sin autenticación en Keycloak; requiere un broker SAML que firme redirecciones)

Keycloak 26.8.1 (24ed1dad) - Red Hat

IDaún sin CVE
ClaseOAuth leftover
AlcanceRemoto (sin cuenta de Keycloak; requiere una firma HTTP-Redirect genuina del 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
ProductoKeycloak
Afectado26.8.1 (24ed1dadf3f246a555adb6d3d4a99e9b3003fb3b); Quarkus 3.40.1; imagen quay.io/keycloak/keycloak:26.8.1
Autenticaciónninguna en Keycloak. Requiere un broker de proveedor de identidad SAML con validateSignature=true y wantAssertionsSigned ausente o en false.
LicenciaGNU Affero GPL v3.0
Laboratoriosolo 127.0.0.1:18084

Qué puede hacer un atacante

Necesita el NameID de la víctima (normalmente un correo electrónico) y una redirección HTTP-Redirect firmada real de ese IdP. No necesita una contraseña de Keycloak. No necesita un buzón de correo. Un IdP solo-POST no entrega esa firma. El ACS GET permanece montado incluso cuando la importación de metadatos prefiere POST.

PrivilegioMétodo / sinkReconocimiento / integridad / disponibilidadProbado en laboratorio o inferido
Vincular un documento SAML falsificado mientras la firma legítima aún se verificaACS del broker por GET con SAML%52esponse=<falsificado> delante de SAMLResponse firmadoIntegridad (autenticación)Probado en laboratorio. Correo de control [email protected]. Correo de ataque [email protected]
Crear el usuario víctima mediante el primer inicio de sesión del brokercallback.authenticated sobre el NameID falsificadoIntegridad (creación de cuenta)Probado en laboratorio. Recuento de víctimas 0 antes de la consulta dividida, 1 después
Sesión como un usuario existente del broker, incluido un administrador que usa el mismo IdPMismo ACS, NameID de ese usuarioIntegridad (toma de control de cuenta)Inferido. El laboratorio creó la víctima en el primer inicio de sesión
Conservar RelayState y la sesión de autenticaciónRelayState permanece con el valor firmadoIntegridadCódigo fuente. La firma cubre RelayState
Control negativoRedirección firmada legítima, sin parámetro adicionaln/aProbado en laboratorio. El control finaliza como el correo del atacante

Permanece cerrado en este leftover

EjeMétodo / sinkPor qué está cerrado
IntegridadSplit por punto y coma SAMLResponse=...;SAMLResponse=...issue #53354. quarkus.http.use-semicolon-as-query-param-delimiter=false
IntegridadAserción sin firmar cuando wantAssertionsSigned=truehandleLoginResponse entonces exige una firma de aserción
IntegridadSin broker SAML, o IdP solo-POST sin firma de redirecciónEl atacante nunca obtiene SigAlg + Signature en un GET
IntegridadRCE en el host, Admin REST sin autenticaciónFuera de clase
IntegridadFormulario de nombre VERIFY_PROFILE por defectoProbado en laboratorio como paso de finalización, no como refutación. El formulario ya contiene el correo del broker

Cómo lo encontré

Fijé Keycloak 26.8.1. RESTEasy Reactive toma @QueryParam("SAMLResponse") de Vert.x, que decodifica percent-encoding en los nombres de los parámetros de consulta, por lo que SAML%52esponse colapsa sobre SAMLResponse y gana el primer valor. verifyRedirectSignature reconstruye la cadena firmada a partir de getQueryParameters(false) sobre la consulta sin procesar, donde ese nombre permanece como una clave distinta.

Falsos caminos ya registrados: tratar #53354 como este remanente (nombre con percent-encoding, no punto y coma); seguir los 302 del ACS en el cliente de laboratorio y descartar AUTH_SESSION_ID; interpretar firstName/lastName vacíos en VERIFY_PROFILE como un fallo (el correo ya es el NameID federado); una reverse shell. Teatro.

Laboratorio

Python 3.11+ con cryptography. Se requiere Docker.

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

o:

cd lab
./run.sh

Dirígete solo a http://127.0.0.1:18084. Imagen quay.io/keycloak/keycloak:26.8.1. El lanzador hace chdir a lab/ y ejecuta run.sh. El IdP del laboratorio es in-process. Nunca se comunica con un proveedor de identidad real.

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 solución

Verifique el mismo documento de consulta que analiza el endpoint. Decodifique los nombres de los parámetros con percent-decoding antes de reconstruir la firma, o rechace una consulta que contenga más de un SAMLResponse tras la decodificación. Active wantAssertionsSigned para los brokers de redirección, incluida la ruta de importación de metadatos.

Referencias

  • github.com/keycloak/keycloak etiqueta 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)
  • Relacionado (no es esta ruta): issue #53354 división por punto y coma
  • CWE-287 · CWE-347 · CWE-116

Licencia

GNU Affero GPL v3.0. Consulte LICENSE. Solo para laboratorio en loopback. Sin garantía.

Abraxas Labs [email protected]

Atribuya el CVE a Abraxas Labs.

Descargar herramienta