
Script Python3 per la scansione di macchine vulnerabili a CVE-2021-44228 (Log4shell).

Questo script Python3 cerca di individuare server vulnerabili a CVE-2021-44228, noto anche come Log4Shell, una vulnerabilità molto critica trovata nella libreria di logging Java Log4j2.
Non si basa su server DNS esterni per verificare e convalidare i target vulnerabili: quando viene avviato, viene creato un nuovo thread in ascolto su tutte le interfacce e sulla porta 55555 (modificabile tramite file .env o variabili d'ambiente). Aspetterà connessioni di callback dalle macchine vulnerabili e notificherà il thread principale tramite una Python Queue. Tieni presente che potresti dover aggiungere regole firewall (e/o regole di port forwarding) per consentire connessioni in entrata alla coppia IP:porta in ascolto.
Per aumentare le possibilità di innescare la vulnerabilità, lo strumento accetta un URL come argomento (o una lista di URL) e cerca eventuali form inclusi negli URL forniti. Poi tenta di sfruttare la vulnerabilità usando ogni parametro per ogni form trovato (richieste GET e POST). Questo è il comportamento predefinito, ma può essere disabilitato usando l'opzione --skip-forms (in questo caso viene eseguita solo 1 richiesta e il payload viene posizionato in alcuni campi dell'intestazione).
Inoltre, vengono usate le seguenti intestazioni predefinite per testare se i target sono vulnerabili:
È possibile aggiungere intestazioni personalizzate tramite opzione da riga di comando.
Per una descrizione completa dell'uso, vedi la sezione seguente.
python3 log4j_checker.py -h
usage: log4j_checker.py [-h] [--url URL] [--headers HEADERS [HEADERS ...]] [--urls URLS] [--skip-forms]
optional arguments:
-h, --help show this help message and exit
--url URL Single url you want to test (valid url is http(s)://host:[port]/[path])
--headers HEADERS [HEADERS ...]
Custom headers you want to try (space separated)
--urls URLS A file containing 1 url per line
--skip-forms Skip forms check (only perform 1 request)
Questo strumento è pensato per essere usato per testare i propri sistemi.
NOTA IMPORTANTE: Questo strumento non garantisce che il tuo server NON sia vulnerabile anche se il risultato è negativo. Questo perché la tua applicazione potrebbe registrare il payload malevolo da qualche altra parte e non è possibile coprire tutti i casi. Quindi il modo migliore per verificare se sei vulnerabile è cercare i pacchetti vulnerabili (ad esempio log4j-core*.jar e log4j-api*.jar) in tutto il filesystem.