Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2021-20323 — Prueba de concepto y análisis para CVE-2021-20323, una vulnerabilidad de XSS reflejado en el endpoint clients-registrations de Keycloak, con condiciones de explotación, recomendaciones de mitigación y enlaces a avisos oficiales. | Kitploit
Herramientas/GitHubGitHub/ndmalc/cve-2021-20323
Análisis de VulnerabilidadesExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubndmalc/cve-2021-20323

CVE-2021-20323

Prueba de concepto y análisis para CVE-2021-20323, una vulnerabilidad de XSS reflejado en el endpoint clients-registrations de Keycloak, con condiciones de explotación, recomendaciones de mitigación y enlaces a avisos oficiales.

Ver Repositorio
132hace 3 añosAú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

CVE-2021-20323

Descripción

Keycloak anterior a 18.0.0 y posterior a 10.0.0 contiene un XSS reflejado en el endpoint de registros de clientes. El error se desencadena al proporcionar, mediante POST, una estructura JSON con una clave como nombre de parámetro que no es compatible con el endpoint. La respuesta refleja la clave JSON en un mensaje de error y con la cabecera establecida como Content-Type: text/html. Cuando se ejecuta en un navegador, el código HTML de la clave JSON se interpreta, lo que permite ejecutar código JavaScript. No se requiere autenticación y el error afecta a todos los reinos disponibles.

Actualmente, debido a que el error requiere Content-Type: application/json y se envía mediante un POST, no existe una ruta común de explotación que tenga un impacto en el usuario.

Este repositorio proporciona un POC para CVE-2021-20323 y recomendaciones de remediación/mitigación.

Cómo desencadenar el error

El error es muy fácil de desencadenar.

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/json" -d "{\"\":1}"

También es posible desencadenarlo con el proveedor openid-connect.

root@kitploit:~
curl -v -X POST {BaseURL}/realms/master/clients-registrations/openid-connect -H "Content-type: application/json" -d "{\"\":1}"

Nota: En versiones antiguas de Keycloak (las que funcionan con wildfly en lugar de quarkus) la ruta base usa /auth/realms/* en lugar de /realms/*

¿Es explotable el error?

Como podemos ver en múltiples fuentes aquí o aquí, no es comúnmente posible explotar un XSS POST reflejado que requiera Content-Type: application/json. El único caso en que podría ocurrir es si la política CORS se hubiera relajado manualmente del valor predeterminado para permitir solicitudes de origen cruzado. Este escenario solo es razonable suponer en casos de uso muy específicos, por razones funcionales establecidas por el propietario de la aplicación. Para que sea explotable en tal caso, el atacante debería tener el control del dominio/servidor permitido en la política CORS o tener un XSS en ese segundo dominio que pueda usarse como relevo.

Con CVE-2021-20323, Keycloak no acepta POST con Content-Type de multipart/form-data o application/x-www-form-urlencoded, que son los únicos dos tipos permitidos en un envío básico de formulario. Esto hace que CVE-2021-20323 solo sea explotable si CORS lo permite explícitamente.

root@kitploit:~
# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: multipart/form-data" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

# curl -X POST {BaseURL}/realms/master/clients-registrations/default -H "Content-type: application/x-www-form-urlencoded" -d "{\"\":1}"
{"error":"RESTEASY003065: Cannot consume content type"}

¿Cómo solucionarlo?

Actualice a Keycloak 18.0.0 o posterior.

No hay una versión corregida conocida para RedHat Single Sign-On, que es una versión reempaquetada de Keycloak por RedHat.

Alternativas de mitigación

  1. Implementar un proxy inverso que prohíba cualquier llamada a clients-registrations
  2. Configurar Keycloak con ACL para limitar el acceso a clients-registrations, similar a esta entrada de blog de Keycloak

Enlaces

  • https://github.com/keycloak/keycloak/security/advisories/GHSA-m98g-63qj-fp8j
  • https://nvd.nist.gov/vuln/detail/CVE-2021-20323
  • https://bugzilla.redhat.com/show_bug.cgi?id=2013577
  • https://access.redhat.com/security/cve/CVE-2021-20323
  • https://github.com/keycloak/keycloak/commit/3aa3db16eac9b9ed8c5335ac86f5f50e0c68662d
  • https://security.stackexchange.com/questions/263301/reflected-xss-found-in-web-application-via-post-request-with-json-body-is-this
  • https://www.keycloak.org/2021/12/cve

Licencia

Licencia MIT © [ndmalc]

Descargar herramienta