Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
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.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
hka-seminar-log4shell — Demonstração prática da vulnerabilidade Log4Shell (CVE-2021-44228) | Kitploit
Ferramentas/GitHubGitHub/fabioeletto/hka-seminar-log4shell
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubfabioeletto/hka-seminar-log4shell

hka-seminar-log4shell

Demonstração prática da vulnerabilidade Log4Shell (CVE-2021-44228)

Ver Repositório
1há 1 anoAinda 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

Trabalho de Seminário - Demonstração da Vulnerabilidade Log4Shell (CVE-2021-44228)

Aviso de Segurança

Este repositório é destinado exclusivamente a fins educacionais e de demonstração no âmbito de um trabalho de seminário relacionado à segurança. Não utilize este código em ambientes de produção ou contra sistemas sem permissão explícita. A configuração visa promover a conscientização sobre segurança e mostrar como vulnerabilidades complexas podem surgir quando recursos aparentemente inofensivos, como registro (logging), resolução de nomes e carregamento dinâmico de classes, são combinados.

Índice

  • 1. Descrição do Projeto

    • 1.1 Objetivo do Trabalho de Seminário
    • 1.2 Visão Geral da Demonstração
  • 2. O que é Log4Shell?

  • 3. Componentes Técnicos em Detalhe

    • 3.1 Log4j - Funcionamento
    • 3.2 JNDI - Mecanismo de Lookup
    • 3.3 LDAP - Estrutura e Papel
    • 3.4 Fluxo Geral do Log4Shell
  • 4. Estrutura do Projeto e Configuração

    • 4.1 Visão Geral dos Diretórios
    • 4.2 Pré-requisitos
    • 4.3 Configuração
  • 5. Demonstração do Projeto

  • 6. Medidas de Proteção

  • 7. Conclusão

  • 8. Fontes

1. Descrição do Projeto

1.1 Objetivo do Trabalho de Seminário

O objetivo deste trabalho de seminário é proporcionar uma compreensão aprofundada da vulnerabilidade de segurança Log4Shell (CVE-2021-44228), que se tornou conhecida em dezembro de 2021 e foi classificada como uma das vulnerabilidades mais críticas dos últimos anos. O trabalho explica tanto os fundamentos teóricos quanto demonstra uma demonstração prática da vulnerabilidade.

1.2 Visão Geral da Demonstração

Para ilustrar praticamente a vulnerabilidade de segurança Log4Shell, foi construído neste repositório um ambiente isolado e containerizado que reproduz todo o fluxo de ataque de forma reproduzível. A demonstração baseia-se em três componentes principais:

  • vulnerable-app: Uma aplicação Spring Boot intencionalmente vulnerável com Log4j na versão 2.14.1. Ela registra o cabeçalho User-Agent da requisição HTTP, que os atacantes podem manipular para explorar a vulnerabilidade.
  • ldap-server: Um Fork da conhecida ferramenta marshalsec, que atua como servidor LDAP. Este servidor está sob controle do atacante e fornece uma referência a uma classe Java maliciosa que será executada posteriormente.
  • payload-server: Um servidor HTTP simples que entrega uma classe Java maliciosa (Exploit.class). Assim como o servidor LDAP, este servidor está sob controle do atacante.

Nota: Informações mais detalhadas sobre a configuração e execução da demonstração encontram-se na seção 4. Estrutura do Projeto e Configuração e 5. Demonstração do Projeto.

2. O que é Log4Shell?

Log4Shell é o nome de uma vulnerabilidade crítica de segurança na biblioteca Java Log4j com a designação CVE-2021-44228. Ela permite que um atacante, com mínimo esforço, execute código arbitrário em um servidor remoto (Remote Code Execution, ou RCE).

A vulnerabilidade afeta o Log4j nas versões 2.0 a 2.14.1 e é tão grave que foi classificada com o nível de risco máximo por muitas autoridades de segurança, incluindo o BSI (Escritório Federal de Segurança da Informação da Alemanha).

Log4Shell é particularmente perigosa porque ...

  • Log4j é extremamente difundido. É usado desde servidores de jogos até aplicações empresariais.
  • nenhuma autenticação é necessária; qualquer atacante externo anônimo pode potencialmente causar danos.
  • o vetor de ataque é trivial; muitas vezes basta enviar uma string manipulada para a aplicação.
  • a funcionalidade no Log4j para explorar essa vulnerabilidade está ativada por padrão.

A causa real reside em uma funcionalidade do Log4j que permite carregar conteúdo dinâmico em mensagens de log através dos chamados Lookups. Em combinação com JNDI (Java Naming and Directory Interface) e o protocolo LDAP (Lightweight Directory Access Protocol), isso permite carregar e executar classes Java maliciosas remotas.

A descoberta e divulgação da vulnerabilidade desencadeou uma onda de segurança mundial. Muitos sistemas tiveram que ser imediatamente corrigidos ou desligados. Posteriormente, outras vulnerabilidades relacionadas (por exemplo, CVE-2021-45046) foram descobertas, mostrando o quão profundo e perigoso o problema era.

A seguir, as tecnologias envolvidas e sua interação são explicadas em detalhes para desenvolver uma compreensão mais profunda da vulnerabilidade.

3. Componentes Técnicos em Detalhe

3.1 Log4j - Funcionamento

Log4j é uma biblioteca criada pela Apache para registro de eventos em aplicações Java. O registro (logging) é uma ferramenta central no desenvolvimento de software para monitorar sistemas ou analisar erros. Log4j está entre os frameworks de logging mais conhecidos e amplamente utilizados no ecossistema Java, sendo usado tanto em aplicações pequenas quanto em grandes sistemas empresariais.

Por que registrar (logging)?

Enquanto um programa é executado, ocorrem eventos como, por exemplo:

  • requisições de usuários
  • mudanças de estado internas
  • mensagens de erro

Esses eventos podem ser documentados com logs, geralmente como saída de texto no console, em arquivos ou através de protocolos de rede para servidores de log centralizados. Através de um logging adequado, é possível rastrear o que uma aplicação fez e quando fez.

O que o Log4j oferece?

O Log4j oferece uma infraestrutura flexível e altamente configurável para geração e processamento de mensagens de log. Entre as funcionalidades centrais estão:

  • Log-Level: Existem diferentes níveis de importância (por exemplo, DEBUG, INFO, WARN, ERROR), que permitem controlar o nível de detalhe do registro.
  • Appenders: As saídas de log podem ser direcionadas para diferentes destinos (por exemplo, console, arquivo ou servidores remotos).
  • Layouts: Com layouts, é possível definir o formato da mensagem de log (por exemplo, timestamp, thread, mensagem).

Outras funcionalidades relevantes para o trabalho de seminário serão abordadas em seções posteriores, especialmente a funcionalidade de placeholders e a funcionalidade de Lookup.

Exemplo Simples```java

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

public class Example { private static final Logger logger = LogManager.getLogger();

public static void main(String[] args) {
    logger.info("Starte Anwendung...");
}

}

Neste exemplo simples, uma instância de logger é criada ou recuperada, caso já exista. Em seguida, uma mensagem de log é emitida no nível `INFO`. O Log4j cuida da formatação e saída da mensagem, com base na configuração. Um exemplo de configuração poderia ser assim:```xml
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Esta configuração define um appender que exibe mensagens de log no formato Datum Uhrzeit Log-Level Loggername - Nachricht no console. Este appender é então atribuído ao root logger, que processa todas as mensagens de log a partir do nível INFO.

Baixar ferramenta