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
hka-seminar-log4shell — Dimostrazione pratica della vulnerabilità Log4Shell (CVE-2021-44228) | Kitploit
Strumenti/GitHubGitHub/fabioeletto/hka-seminar-log4shell
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneLab e Pratica
GitHubfabioeletto/hka-seminar-log4shell

hka-seminar-log4shell

Dimostrazione pratica della vulnerabilità Log4Shell (CVE-2021-44228)

Vedi Repository
11 anno 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

Seminararbeit - Log4Shell-Schwachstellen-Demonstration (CVE-2021-44228)

Avviso di sicurezza

Questo repository è destinato esclusivamente a scopi educativi e dimostrativi nell'ambito di un lavoro seminariale sulla sicurezza. Non utilizzare questo codice in ambienti di produzione o contro sistemi senza autorizzazione esplicita. La configurazione ha lo scopo di promuovere la consapevolezza della sicurezza e mostrare come vulnerabilità complesse possano nascere quando funzionalità apparentemente innocue come logging, risoluzione dei nomi e caricamento dinamico di classi vengono combinate tra loro.

Indice

  • 1. Descrizione del progetto

    • 1.1 Obiettivo del lavoro seminariale
    • 1.2 Panoramica della dimostrazione
  • 2. Cos'è Log4Shell?

  • 3. Componenti tecnici in dettaglio

    • 3.1 Log4j - Funzionamento
    • 3.2 JNDI - Meccanismo di Lookup
    • 3.3 LDAP - Struttura e ruolo
    • 3.4 Flusso generale di Log4Shell
  • 4. Struttura del progetto e setup

    • 4.1 Panoramica delle directory
    • 4.2 Prerequisiti
    • 4.3 Setup
  • 5. Demo del progetto

  • 6. Misure di protezione

  • 7. Conclusione

  • 8. Fonti

1. Descrizione del progetto

1.1 Obiettivo del lavoro seminariale

L'obiettivo di questo lavoro seminariale è fornire una comprensione approfondita della vulnerabilità Log4Shell (CVE-2021-44228), resa nota nel dicembre 2021 e classificata come una delle vulnerabilità di sicurezza più critiche degli ultimi anni. Il lavoro spiega sia le basi teoriche, sia presenta una dimostrazione pratica della vulnerabilità.

1.2 Panoramica della dimostrazione

Per illustrare praticamente la vulnerabilità Log4Shell, in questo repository è stato allestito un ambiente isolato e containerizzato che riproduce l'intero flusso di attacco in modo riproducibile. La dimostrazione si basa su tre componenti centrali:

  • vulnerable-app: Un'applicazione Spring Boot volutamente vulnerabile con Log4j versione 2.14.1. Essa registra l'intestazione User-Agent dalla richiesta HTTP, che gli attaccanti possono manipolare per sfruttare la vulnerabilità.
  • ldap-server: Un fork del noto tool marshalsec, che funge da server LDAP. Questo server è sotto il controllo dell'attaccante e fornisce un riferimento a una classe Java dannosa che verrà successivamente eseguita.
  • payload-server: Un semplice server HTTP che distribuisce una classe Java dannosa (Exploit.class). Come il server LDAP, anche questo server è sotto il controllo dell'attaccante.

Nota: Informazioni dettagliate sul setup e sull'esecuzione della dimostrazione si trovano nelle sezioni 4. Struttura del progetto e setup e 5. Demo del progetto.

2. Cos'è Log4Shell?

Log4Shell è il nome di una vulnerabilità di sicurezza critica nella libreria Java Log4j identificata come CVE-2021-44228. Consente a un attaccante di eseguire codice arbitrario su un server remoto (Remote Code Execution, RCE) con il minimo sforzo.

La vulnerabilità riguarda Log4j nelle versioni 2.0 fino a 2.14.1 ed è così grave che è stata classificata con il livello di rischio più alto da molte autorità di sicurezza, incluso il BSI (Ufficio federale per la sicurezza informatica).

Log4Shell è particolarmente pericolosa perché...

  • Log4j è estremamente diffuso. Viene utilizzato da server di gioco fino ad applicazioni enterprise.
  • Non è necessaria alcuna autenticazione; qualsiasi attaccante esterno anonimo può potenzialmente causare danni.
  • Il vettore di attacco è banale: spesso è sufficiente inviare una stringa manipolata all'applicazione.
  • La funzionalità in Log4j per sfruttare questa vulnerabilità è abilitata per impostazione predefinita.

La causa principale risiede in una funzionalità di Log4j che consente di caricare contenuti dinamici nei messaggi di log tramite i cosiddetti Lookup. In combinazione con JNDI (Java Naming and Directory Interface) e il protocollo LDAP (Lightweight Directory Access Protocol), ciò permette di caricare ed eseguire classi Java dannose remote.

La scoperta e la pubblicazione della vulnerabilità hanno scatenato un'ondata di sicurezza a livello mondiale. Molti sistemi hanno dovuto essere immediatamente patchati o spenti. Nel periodo successivo sono state scoperte ulteriori vulnerabilità correlate (ad es. CVE-2021-45046), dimostrando quanto profonda e pericolosa fosse la problematica.

Di seguito, le tecnologie coinvolte e la loro interazione vengono spiegate in dettaglio per sviluppare una comprensione più approfondita della vulnerabilità.

3. Componenti tecnici in dettaglio

3.1 Log4j - Funzionamento

Log4j è una libreria creata da Apache per la registrazione di eventi in applicazioni Java. Il logging è uno strumento centrale nello sviluppo software per monitorare i sistemi o analizzare gli errori. Log4j è uno dei framework di logging più conosciuti e utilizzati nell'ecosistema Java, impiegato sia in piccole applicazioni che in grandi sistemi aziendali.

Perché il logging?

Mentre un programma è in esecuzione, si verificano ad esempio i seguenti eventi:

  • richieste utente
  • cambiamenti di stato interni
  • messaggi di errore

Questi eventi possono essere documentati con log, solitamente come output testuale nella console, in file o tramite protocolli di rete verso server di log centralizzati. Un logging appropriato consente di tracciare cosa ha fatto un'applicazione e quando.

Cosa offre Log4j?

Log4j fornisce un'infrastruttura flessibile e altamente configurabile per la generazione e l'elaborazione di messaggi di log. Tra le funzionalità principali:

  • Livelli di log: Esistono diversi livelli di importanza (ad es. DEBUG, INFO, WARN, ERROR) che permettono di controllare quanto dettagliato debba essere il logging.
  • Appender: L'output dei log può essere indirizzato a diverse destinazioni (ad es. console, file o server remoti).
  • Layout: Con i layout si può definire il formato del messaggio di log (ad es. timestamp, thread, messaggio).

Ulteriori funzionalità rilevanti per il lavoro seminariale verranno trattate nelle sezioni successive, in particolare la funzionalità dei placeholder e la funzionalità di Lookup.

Esempio semplice```java

import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;

public class Example { private static final Logger logger = LogManager.getLogger();

public static void main(String[] args) {
    logger.info("Starte Anwendung...");
}

}

In questo semplice esempio viene creata o recuperata un'istanza di Logger, se già esistente. Successivamente viene emesso un messaggio di log a livello `INFO`. Log4j gestisce la formattazione e l'output del messaggio in base alla configurazione. Una configurazione di esempio potrebbe essere la seguente:```xml
<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n"/>
        </Console>
    </Appenders>
    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

Questa configurazione definisce un Appender che stampa i messaggi di log nel formato Datum Uhrzeit Log-Level Loggername - Nachricht sulla console. Questo Appender viene quindi assegnato al logger radice, che elabora tutti i messaggi di log a partire dal livello INFO.

Scarica lo strumento