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
log4shell_sentinel — Uno Scanner intelligente per Log4Shell/Log4j/CVE-2021-44228 | Kitploit
Strumenti/GitHubGitHub/ossie-git/log4shell_sentinel
Scanner di VulnerabilitàSicurezza dei ContenitoriAnalisi delle VulnerabilitàInformatica ForenseRisposta agli IncidentiAnalisi dei Log
GitHubossie-git/log4shell_sentinel

log4shell_sentinel

Uno Scanner intelligente per Log4Shell/Log4j/CVE-2021-44228

Vedi Repository
1414 anni 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

Log4Shell Sentinel - Uno scanner intelligente per CVE-2021-44228

Introduzione

Sebbene siano stati rilasciati alcuni strumenti eccellenti per aiutare le organizzazioni a scansionare i propri ambienti alla ricerca di applicazioni vulnerabili alla critica vulnerabilità Log4J / CVE-2021-44228, ho ritenuto che:

  • nessuno degli strumenti che ho incontrato fosse pensato per consentire agli analisti di tracciare un determinato risultato durante l'intero processo di remediation. Log4Shell Sentinel produce i suoi risultati in formato CSV, aspettandosi che l'analista poi elabori e sezioni i dati in Excel, aggiunga alcuni risultati a una lista di ignorati e riesegua la scansione, confronti le scansioni, aggiunga dati ai risultati, ecc.
  • gli scanner basati su file lasciano molto lavoro da fare agli analisti, specialmente in ambienti containerizzati

Così è nato Log4Shell Sentinel. Log4Shell Sentinel è uno scanner basato su file con alcune caratteristiche uniche. Non intende sostituire tutti gli altri strumenti disponibili, ma può integrarli.

Caratteristiche

Log4Shell Sentinel è uno scanner basato su file. Cerca applicazioni Java-based scandagliando un sistema target alla ricerca di artefatti nei seguenti formati di file:

Tipo di fileDettagli
Simple jarCaso in cui il file log4j-core non è incorporato.
Fat / Uber jarUn uber jar è un jar che contiene sia le tue classi/pacchetto che tutte le dipendenze dell'applicazione (librerie, risorse e file metadati) all'interno di un unico file jar. Questa è l'opzione di deployment più comune.
WARUn file war (Web Application Archive) contiene codice JSP, HTML e JavaScript oltre alle librerie e altre risorse. Questo formato è meno comune.
EARUn file ear (Enterprise Application Archive) è un altro formato che era più comune con Jakarta EE per i deployment.

e cerca istanze di jar log4j-core vulnerabili. Quindi:

  • calcola un hash MD5 dell'artefatto. Ciò consente a un analista di identificare la stessa applicazione in esecuzione su macchine/container diversi e trattarla come un unico risultato

  • per i file determinati come appartenenti a un container, ad esempio: /var/lib/docker/overlay2/192768f471818601094bf4edd96d14bfc0e2b178a04a2efd00b2231ad4e46b33/merged/app/spring-boot-application.jar, esegue il lavoro pesante di mappare il file all'immagine corrispondente. Ad esempio, tradurrebbe quanto sopra nell'immagine: ghcr.io/christophetd/log4shell-vulnerable-app:latest. Poiché i vari runtime dei container memorizzano questa mappatura in modi diversi, ciò può far risparmiare ore di frustrazione a un analista. Inoltre consente a un analista di trattare un certo numero di container che eseguono una singola applicazione come un unico risultato.

  • rimuove corrispondenze inutili come quelle relative a container attualmente non in esecuzione, incluse immagini in cache. Ciò consente all'analista di concentrarsi su ciò che è importante e risparmia ore di lavoro inutili

  • consente a un analista di ignorare corrispondenze in base a:

    • hash MD5
    • percorso file
    • immagine container

    Ciò permette all'analista di rimuovere applicazioni che sa non essere vulnerabili o che corrispondono ad applicazioni da riga di comando che non rappresentano una minaccia. Ad esempio, se viene rilevata un'istanza di Logstash, un analista può scegliere di ignorarla se non utilizza lo strumento o lo esegue occasionalmente da riga di comando.

  • è ottimizzato per funzionare con i tuoi strumenti di configuration management come Ansible, dandoti la possibilità di scansionare rapidamente il tuo ambiente in pochi minuti

Arricchimento dei metadati

Per i dettagli sull'arricchimento dei metadati aggiunto da Log4Shell Sentinel, consulta il mio post sul blog.

Installazione

Il modo più semplice è scaricare direttamente il binario precompilato.

Compilazione dal sorgente

Anche questo è semplice. Tuttavia, probabilmente vorrai compilare una versione staticamente collegata per evitare variazioni legate a GLIBC nel tuo ambiente. Lo strumento utilizza i seguenti moduli che usano CGO per default:

  • os/user
  • net

Per compilare una versione staticamente collegata che utilizzi le versioni Go di queste librerie, basta clonare il repository e poi eseguire:

root@kitploit:~
$ CGO_ENABLED=0 go build -ldflags="-s -w"
$ ldd log4shell_sentinel
        not a dynamic executable

Utilizzo

root@kitploit:~
$ ./log4shell_sentinel -h
NAME:
   Log4Shell Sentinel - by Osama Elnaggar

USAGE:
   log4shell_sentinel [global options] command [command options] [arguments...]

VERSION:
   v1.0.0

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --path value, -p value       Path to search (default: ".")
   --no-banner, --nb            Suppress banner (default: false)
   --no-messages, --nm          Suppress messages except for CSV output (default: false)
   --no-header, --nh            Suppress header in CSV output (default: false)
   --imd5 value, --im value     Ignore MD5 hashes. Refer to the GitHub page for expected format
   --ipath value, --ip value    Ignore file path matches. Refer to the GitHub page for expected format
   --icimage value, --ic value  Ignore container image matches. Refer to the GitHub page for expected format
   --print-headers, --ph        Print CSV Headers only (default: false)
   --help, -h                   show help (default: false)
   --version, -v                print the version (default: false)

Di default, una scansione analizzerà semplicemente la directory corrente. Ad esempio:

root@kitploit:~
$ ./log4shell_sentinel

░█░░░█▀█░█▀▀░█░█░█▀▀░█░█░█▀▀░█░░░█░░░░░█▀▀░█▀▀░█▀█░▀█▀░▀█▀░█▀█░█▀▀░█░░
░█░░░█░█░█░█░░▀█░▀▀█░█▀█░█▀▀░█░░░█░░░░░▀▀█░█▀▀░█░█░░█░░░█░░█░█░█▀▀░█░░
░▀▀▀░▀▀▀░▀▀▀░░░▀░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░░░▀▀▀░▀▀▀░▀░▀░░▀░░▀▀▀░▀░▀░▀▀▀░▀▀▀

- A CVE-2021-44228/CVE-2021-45046/CVE-2021-45105 Scanner
- v1.0.0
- by Osama Elnaggar

[*] WARNING: Running as non-root user.
             Non-readable files / dirs will be skipped
             Container mapping will fail

[*] Starting shallow scan ............ [DONE]
[*] Starting deep scan ............... [DONE]
[*] Calculating MD5 hashes ........... [DONE]
[*] Performing container image lookups [DONE]
[*] Processing ignore list(s) ........ [DONE]
[*] Generating output ................ [DONE]

IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

Riceverai immediatamente un WARNING se lo esegui come utente non-root poiché richiede permessi di root:

  • se intendi scansionare l'intero filesystem (consigliato)
  • se intendi arricchire le ricerche container -> immagine (è richiesto l'accesso al demone Docker, file di configurazione, ecc.)

Funzionerà comunque senza privilegi di root ma potrebbe non darti i migliori risultati.

Comprensione dei risultati

Un esempio di risultato è:

root@kitploit:~
IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

Alcuni campi sono intenzionalmente lasciati vuoti perché l'analista li compili in Excel, ecc. Una breve descrizione di ciascun campo è riportata di seguito:

Opzioni

Lo strumento offre le seguenti opzioni:

Supporto per la mappatura Container -> Immagine

Una delle caratteristiche uniche di Log4Shell Sentinel, non presente in nessun altro strumento, è la capacità di tradurre jar trovati in scansioni del filesystem, come:

/var/lib/docker/overlay2/192768f471818601094bf4edd96d14bfc0e2b178a04a2efd00b2231ad4e46b33/merged/app/spring-boot-application.jar

nell'immagine container corrispondente (l'esempio sopra si traduce ad esempio in ghcr.io/christophetd/log4shell-vulnerable-app:latest). Poiché i vari runtime dei container memorizzano questa mappatura in modi diversi, ciò può far risparmiare ore di frustrazione a un analista. Inoltre consente a un analista di trattare un certo numero di container che eseguono una singola applicazione come un unico risultato. La soluzione attualmente supporta le seguenti ricerche:

  • Docker (con storage driver overlay2)
  • Docker (con storage driver aufs)
  • CRI-O
  • containerd

Ignore Lists

Il numero di applicazioni identificate potrebbe inizialmente sembrare schiacciante, oppure potresti volerti concentrare su un dato sottoinsieme di applicazioni identificate, come quelle esposte per prime agli utenti esterni. Oppure potresti volerti concentrare su un dato perimetro di conformità. Per supportare ciò, l'applicazione supporta la specifica di una lista. Log4Shell attualmente supporta 3 liste di ignorati:

  • lista di ignorati per hash MD5
  • lista di ignorati per immagine container
  • lista di ignorati per percorso

Invece di semplici liste, si aspetta un file CSV come input. Ciò incoraggia l'analista a documentare perché ignora un dato risultato. Man mano che l'analista elabora i risultati e identifica applicazioni non vulnerabili tramite analisi manuale o automatizzata del codice sorgente o strumenti DAST, ecc.

Lista di ignorati per hash MD5

La lista è un semplice file CSV nel seguente formato:

root@kitploit:~
MD5Sum,AppName,Reason

Le colonne AppName e Reason possono essere vuote, ma sono lì per tenere traccia del motivo per cui includi o escludi determinate applicazioni.

NOTA Poiché questa funzionalità utilizza l'hash MD5 calcolato per l'applicazione, funzionerà solo per applicazioni che sono fat/uber jar, EAR o WAR.

Ad esempio, se avessimo il seguente risultato:

root@kitploit:~
IP,Hostname,AppName,Team,Ignore (Y/N),Comments,MD5Hash,Timestamp,Container,ContainerImage,FullPath,Version
192.168.121.121,server3,,,,,4e615cd580758b70c49ade1f79103328,2021-12-21T07:38:09Z,true,ghcr.io/christophetd/log4shell-vulnerable-app:latest,/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,log4j-core-2.14.1.jar

e avessimo determinato che l'applicazione non è vulnerabile, possiamo semplicemente salvare quanto segue in hashes.csv:

root@kitploit:~
4e615cd580758b70c49ade1f79103328,Demo App,Not vulnerable

e poi rieseguire:

root@kitploit:~
# ./log4shell_sentinel --im hashes.csv --path /

il risultato sopra verrebbe soppresso.

Mappatura Container -> Lista di ignorati per immagini

La lista è un semplice file CSV nel seguente formato:

root@kitploit:~
Container Image,AppName,Reason

Basandoci sull'esempio precedente, possiamo dirgli di ignorare qualsiasi risultato in cui l'immagine container è: ghcr.io/christophetd/log4shell-vulnerable-app:latest creando un file images.csv come questo:

root@kitploit:~
ghcr.io/christophetd/log4shell-vulnerable-app:latest,,

e poi eseguendo:

root@kitploit:~
# ./log4shell_sentinel --ic images.csv -p /

Ancora una volta, il nostro risultato precedente verrebbe soppresso.

Lista di ignorati per percorso

Anche questa è un semplice file CSV nel seguente formato:

root@kitploit:~
Path,AppName,Reason

Utilizzando l'esempio sopra, se creiamo il seguente file paths.csv:

root@kitploit:~
/run/containerd/io.containerd.runtime.v2.task/k8s.io/dc2c9c214809f506283c917244cd126a9b056ac7274322d12b59c9196d95dd9b/rootfs/app/spring-boot-application.jar,Demo App,Not vulnerable

il risultato precedente verrebbe soppresso.

ATTENZIONE Quando possibile, è meglio usare un hash MD5 o il nome dell'immagine container per la soppressione, poiché il percorso potrebbe non essere univoco.

Scansione di massa del tuo ambiente

Sebbene sia perfettamente accettabile eseguire Log4Shell Sentinel su un singolo server, dà il meglio di sé quando combinato con il tuo strumento di configuration management preferito (Ansible, Chef, Puppet, Salt, AWS SSM, ecc.) o anche con semplici strumenti SSH paralleli come parellel-ssh.

Questo ti offre numerosi vantaggi, tra cui:

  • trovare istanze duplicate delle tue applicazioni e container e trattare questi risultati come un unico risultato in fase di analisi
  • scansionare l'intero ambiente in pochi minuti

Per un esempio completo di questo in azione, consulta il mio post sul blog.

Workflow

Fare riferimento alla sezione Scansione di massa del tuo ambiente.

FAQ

  • Non vedo tutte le applicazioni vulnerabili. Perché?
    • Il motivo principale è probabilmente legato al fatto di non eseguirlo come utente root (richiede accesso a dove potrebbero essere installate le tue applicazioni) o di non aver specificato il path corretto. Si consiglia di eseguirlo come utente root e impostare --path /
  • Quali limitazioni ha? Alcune limitazioni includono:
    • Lo strumento non può stabilire in modo definitivo se una determinata applicazione è vulnerabile o meno. Invece, rileva se un'applicazione contiene una versione della libreria che è vulnerabile
    • Se l'applicazione rilevata non è in esecuzione in un container, lo strumento non può rilevare se è in esecuzione o meno. Quindi verrà rilevato anche uno strumento da riga di comando che utilizza la versione vulnerabile
    • Lo strumento richiede accesso SSH e quindi non rileverà problemi su sistemi in cui non può essere eseguito
  • La mappatura container -> immagine non funziona. Perché?
    • A partire dalla v1.0.0, lo strumento attualmente supporta la mappatura per:

      • Docker (con storage driver Overlay2)
      • Docker (con storage driver aufs)
      • CRI-O
      • containerd

      Se stai usando qualcos'altro, la mappatura non funzionerà. Se stai usando uno dei precedenti, potrebbe dipendere dal fatto che non stai eseguendo lo strumento come utente root o che il socket/i file utilizzati si trovano in una posizione non predefinita.

  • Quali vulnerabilità rileva?
    • Sebbene sia principalmente mirato a rilevare versioni di log4j che potrebbero essere suscettibili a CVE-2021-45105, segnala anche versioni vulnerabili a CVE-2021-45046 e CVE-2021-44228.
  • Lo strumento funziona su Windows?
    • Sebbene non l'abbia testato, dovrebbe funzionare. Tuttavia, funzionalità come la mappatura file container -> immagine sono specifiche di Linux.

Autore

Sviluppato da: Osama Elnaggar

  • Sito web: https://osamaelnaggar.com
  • Twitter: https://twitter.com/securityfu
  • LinkedIn: https://www.linkedin.com/in/osama-elnaggar-08230957
Scarica lo strumento
CampoEsempioDescrizione
IP192.168.121.121Se l'istanza ha più IP, viene aggiunto l'IP primario
Hostnameserver3Nome host
AppNameLasciato all'utente dopo il completamento della scansione
TeamLasciato all'utente dopo il completamento della scansione
Ignore (Y/N)Lasciato all'utente dopo il completamento della scansione
CommentLasciato all'utente dopo il completamento della scansione
MD5Hash4e615cd580758b70c49ade1f79103328Impronta digitale univoca dell'applicazione
Timestamp2021-12-21T07:38:09ZTimestamp di quando è stata eseguita la scansione. Utile per aggregare più scansioni dello stesso host
ContainertrueTrue = si tratta di un container
ContainerImageghcr.io/christophetd/log4shell-vulnerable-app:latestSe è stato rilevato un container, questa è l'immagine corrispondente
FullPath/run/containerd/io.containerd.
runtime.v2.task/k8s.io/.../spring-boot-application.jar
Percorso completo del risultato. In questo esempio, il JAR vulnerabile fa parte di un fat/uber jar
Versionlog4j-core-2.14.1.jarVersione di log4j-core rilevata
OpzioneDettagli
--path value, -p valueSpecifica quali percorsi cercare. Di default cerca nella directory corrente. IMPORTANTE Si consiglia di impostarlo su / per coprire l'intero filesystem
--no-banner, --nbSopprime il banner
--no-messages, --nmSopprime messaggi come quelli di avanzamento
--no-header, --nhSopprime l'intestazione dell'output CSV. Consigliato quando si esegue su più server
--imd5 value, --im valueIgnora hash MD5. Maggiori dettagli nella sezione Ignore Lists
--ipath value, --ip valueIgnora corrispondenze di percorso file. Maggiori dettagli nella sezione Ignore Lists
--icimage value, --ic valueIgnora corrispondenze di immagine container. Maggiori dettagli nella sezione Ignore Lists
--print-headers, --phStampa solo le intestazioni CSV. Quando esegui Log4Shell Sentinel su più server e aggreghi i risultati, di solito disabiliti l'intestazione. Questo comando produce solo l'intestazione in modo da poterla aggiungere al tuo foglio Excel
  • Ci sono dipendenze esterne?
    • No. Il binario è compilato staticamente.