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
Herramientas/GitHubGitHub/alt3kx/cve-2026-18963
ReconocimientoAnálisis de VulnerabilidadesExplotaciónRecopilación de InformaciónSeguridad WebPruebas de PenetraciónAutenticación
GitHubalt3kx/cve-2026-18963

CVE-2026-18963

Ver Repositorio
hace 13h 18mAú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 →
Sitio web

Acerca de

Herramienta de detección y verificación para CVE-2026-18963, una omisión del estado de restablecimiento de credenciales en Keycloak. Realiza la toma de huellas de versión, enumeración de realms/clientes/usuarios y comprueba si se aplica la condición previa del action-token, para evaluaciones autorizadas.

Compartir

Detector de Omisión del Estado de Restablecimiento de Credenciales CVE-2026-18963 de Keycloak

https://github.com/user-attachments/assets/005fab89-339a-4e4e-881c-da6a626f6c9e

root@kitploit:~
python3 kc-resetforge.py -h


usage: kc-resetforge.py [-h] [--target TARGET] [--targets-file TARGETS_FILE] [--port PORT] [--realm REALM]
                        [--client-id CLIENT_ID] [--username USERNAME] [--new-password NEW_PASSWORD] [--skip-enum]
                        [--enum-only] [--kc-version] [--kc-reset-link] [--corpus-dir CORPUS_DIR] [--label LABEL]
                        [--enum-realms] [--no-enum-realms] [--enum-clients] [--no-enum-clients] [--enum-users]
                        [--no-enum-users] [--realm-wordlist REALM_WORDLIST] [--client-wordlist CLIENT_WORDLIST]
                        [--user-wordlist USER_WORDLIST] [--enum-users-client-id ENUM_USERS_CLIENT_ID]
                        [--verify-login] [--no-verify-login] [--verify-client-id VERIFY_CLIENT_ID]
                        [--timeout TIMEOUT] [--request-delay REQUEST_DELAY] [--output-dir OUTPUT_DIR]
                        [--proxy PROXY] [-d] [-y] [--json-out JSON_OUT]

Marco de reconocimiento + explotación de CVE-2026-18963 de Keycloak (solo infraestructura propia)

options:
  -h, --help            show this help message and exit
  --target TARGET       Single target: bare host/IP, host:port, or a full http(s)://host[:port] URL. Scheme and port
                        are auto-detected if omitted (tries https then http; defaults to 443/80 respectively).
                        Mutually exclusive with --targets-file.
  --targets-file TARGETS_FILE
                        Path to a file with one target per line, same flexible formats as --target ('#' comments
                        allowed). Runs recon+exploit against every target in turn.
  --port PORT           Override port for --target (or a fallback for --targets-file lines without their own port).
                        Per-line ports in --targets-file always take precedence.
  --realm REALM         Realm to target. If omitted, auto-selected from recon results.
  --client-id CLIENT_ID
                        OIDC client_id to use. If omitted, auto-selected from recon results.
  --username USERNAME   Username to target. If omitted, auto-selected from recon results.
  --new-password NEW_PASSWORD
                        Password to set for the target user (default: 'Test123!')
  --skip-enum           Skip recon entirely; --realm/--client-id/--username become required.
  --enum-only           Run recon and print results, but do not attempt exploitation.
  --kc-version          Only run the Keycloak version recon phase (fingerprint + corpus match + patch status) and
                        exit - skips realm/client/user enumeration and exploitation entirely. Works with both
                        --target and --targets-file.
  --kc-reset-link       Only check whether the self-service password-reset ('Forgot Password?' /
                        resetPasswordAllowed) flow is exposed, then exit - a single non-destructive GET, no username
                        needed. Auto-discovers realm/client via a light realm+client recon unless --realm/--client-
                        id are given explicitly. Skips exploitation. Works with both --target and --targets-file.
  --corpus-dir CORPUS_DIR
                        Directory of known-version fingerprints for exact version matching (default:
                        kc_version_corpus).
  --label LABEL         Save THIS target's fingerprint into the corpus under this version label instead of matching
                        an unknown version. Use on an instance of known version.
  --enum-realms         Enumerate realm names (default: on during recon).
  --no-enum-realms
  --enum-clients        Enumerate client IDs per realm (default: on during recon).
  --no-enum-clients
  --enum-users          Enumerate usernames per realm (default: on during recon).
  --no-enum-users
  --realm-wordlist REALM_WORDLIST
  --client-wordlist CLIENT_WORDLIST
  --user-wordlist USER_WORDLIST
  --enum-users-client-id ENUM_USERS_CLIENT_ID
                        Client used for the username-enumeration direct-grant probe (default: admin-cli).
  --verify-login        After a password change, confirm the new credentials via a password-grant token request
                        (default: on).
  --no-verify-login
  --verify-client-id VERIFY_CLIENT_ID
                        Client used for the verification password grant.
  --timeout TIMEOUT
  --request-delay REQUEST_DELAY
                        Seconds to wait before each request in the exploit chain (default: 0.4). Keycloak's login-
                        flow state can be timing-sensitive across the reset/restart/selector replay steps; a small
                        delay makes the chain more reliable. 0 to disable.
  --output-dir OUTPUT_DIR
  --proxy PROXY         Route through an HTTP(S) proxy: 'burp' (127.0.0.1:8080 shorthand), a bare host:port, or a
                        full http(s):// URL.
  -d, --debug           Verbose debug logging of requests/responses/enum probes
  -y, --yes             Skip the 'Continue with this target?' prompt. Required for non-interactive use (scripts,
                        --targets-file with multiple targets, CI).
  --json-out JSON_OUT   Write a JSON report of recon + exploit results to this path.

kc-resetforge — herramienta de reconocimiento + explotación de CVE-2026-18963 de Keycloak (solo infraestructura propia)

Uso
-----
Totalmente automático (reconocimiento -> selección automática del objetivo -> explotación -> verificación):
    python3 kc-resetforge.py --target https://localhost:9990 --proxy burp -d

Solo reconocimiento:
    python3 kc-resetforge.py --target https://localhost:9990 --enum-only -d

Solo comprobación de versión + estado del parche, en muchos hosts:
    python3 kc-resetforge.py --targets-file targets.txt --kc-version

Omitir reconocimiento, apuntar directamente:
    python3 kc-resetforge.py --target https://localhost:9990 --realm master \
        --client-id account --username admin --skip-enum

Requiere: requests, beautifulsoup4 y opcionalmente rich (pip install --break-system-packages)

Resumen de la Vulnerabilidad

Detalles Técnicos

  • Causa raíz: validación de estado inadecuada en el flujo de restablecimiento de credenciales. El servidor rastrea en qué paso se encuentra una sesión, pero no vuelve a verificar de forma independiente que el paso del token de acción enviado por correo se completó realmente antes de permitir que el flujo avance a la actualización de la contraseña.
  • Precondiciones: ninguna — no autenticado, sin interacción del usuario, sin acceso previo requerido.
  • Alcance: cualquier realm con "Olvidé mi contraseña" habilitado, anterior a 26.7.2.
  • Corrección:
    • Keycloak upstream 26.7.2
    • RHBK 26.4 → paquete del operador 26.4.15-1 / imágenes 26.4-23
    • RHBK 26.6 → paquete del operador 26.6.6-1 / imágenes 26.6-12
    • Mitigación provisional: deshabilitar "Olvidé mi contraseña" por realm (Realm Settings → Login → Forgot password)

Acerca de Esta Herramienta

kc-resetforge es una herramienta de detección/verificación. Confirma si el flujo de restablecimiento de credenciales de un objetivo aplica correctamente la precondición del token de acción (parcheado) o no (vulnerable), para su uso en evaluaciones autorizadas. El artículo vinculado a continuación cubre el mecanismo y la metodología de reproducción con la profundidad adecuada para la divulgación pública.

Análisis completo: Forging kc-resetforge: Turning CVE-2026-18963 Into a Repeatable Check

Identificación de versión

kc-resetforge.py no puede preguntarle a Keycloak "¿qué versión eres?", no existe un endpoint pre-autenticación que responda eso. En su lugar, toma la huella digital de un objetivo (campos de respuesta, hashes de activos estáticos, favicon) y la compara con un corpus de huellas que ya has etiquetado con una versión conocida. Sin entrada en el corpus para esa huella = sin versión exacta, por diseño, no es un error.

Construye el corpus una vez por cada versión a la que tengas acceso:

root@kitploit:~
python3 kc-resetforge.py --target https://known-26.6.2-host --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://known-26.7.2-host --kc-version --label 26.7.2
[snip]

Mi laboratorio:
python3 kc-resetforge.py --target https://localhost:9990 --kc-version --label 26.6.2
python3 kc-resetforge.py --target https://localhost:9991 --kc-version --label 26.6.3
python3 kc-resetforge.py --target https://localhost:9992 --kc-version --label 26.6.4
python3 kc-resetforge.py --target https://localhost:9993 --kc-version --label 26.7.0
python3 kc-resetforge.py --target https://localhost:9994 --kc-version --label 26.7.1
python3 kc-resetforge.py --target https://localhost:9995 --kc-version --label 26.7.2

Reconocimiento:
python3 kc-resetforge.py --targets-file targets.txt --kc-version --kc-reset-link --proxy 127.0.0.1:8080
[snip]

[*] Proxying through: http://127.0.0.1:8080
[+] Run Summary
Targets scanned

┏━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃Target                 ┃ Keycloak Version ┃ Patch      ┃ Reset Link ┃ Result ┃
┡━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│https://localhost:9990 │ 26.6.2           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9991 │ 26.6.3           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9992 │ 26.6.4           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9993 │ 26.7.0           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9994 │ 26.7.1           │ VULNERABLE │ ENABLED    │ checked│
│https://localhost:9995 │ 26.7.2           │ PATCHED    │ ENABLED    │ checked│
└───────────────────────┴──────────────────┴────────────┴────────────┴────────┘

Las entradas se guardan junto al script, en kc_version_corpus/, por lo que persisten independientemente del directorio desde el que ejecutes la herramienta; no elimines esa carpeta.

Comprueba qué hay en el corpus:

root@kitploit:~
ls kc_version_corpus/

Una vez etiquetado, cada escaneo futuro se compara automáticamente contra él:

root@kitploit:~
python3 kc-resetforge.py --target https://target --kc-version
python3 kc-resetforge.py --targets-file targets.txt --kc-version

Créditos

Descubrimiento de la Vulnerabilidad

  • James Paremain (acreditado en el aviso de Red Hat)

Herramienta

  • Alex Hernandez aka (@_alt3kx_)

Referencias

  • https://access.redhat.com/security/cve/CVE-2026-18963
  • https://www.keycloak.org/2026/08/keycloak-2672-released
  • https://thehackernews.com/2026/08/critical-keycloak-password-reset-flaw.html
  • https://github.com/keycloak/keycloak/issues/51833

Aviso Legal

Este proyecto se proporciona estrictamente para:

  • Evaluaciones de seguridad autorizadas
  • Pruebas defensivas
  • Investigación educativa

No ejecutes esta herramienta contra ningún sistema que no poseas o para el que no tengas autorización escrita explícita para probar. El uso no autorizado contra infraestructura de terceros es ilegal y queda fuera del propósito previsto de este proyecto. El mantenedor no asume ninguna responsabilidad por el mal uso.

Descargar herramienta
CampoValor
CVECVE-2026-18963
SeveridadCrítica
CVSS9.1
CWECWE-640 (Mecanismo Débil de Recuperación de Contraseña)
ComponenteKeycloak — flujo de autenticación de restablecimiento de credenciales
ImpactoToma de control de cuenta no autenticada y sin interacción (incluidas cuentas de administrador)
Versión CorregidaKeycloak 26.7.2 (upstream) / RHBK 26.4.15-1, 26.6.6-1