
Scansiona la tua rete IP e determina gli host con possibile vulnerabilità CVE-2021-44228 nella libreria log4j.
Scansiona la tua rete IP e determina gli host con possibile vulnerabilità CVE-2021-44228 nella libreria log4j.
Esistono strumenti molto migliori e avanzati per l'audit di sicurezza, ma molti di essi richiedono software di penetration test commerciale o servizi o software esterni di terze parti.
Questo script è scritto per essere uno strumento piccolo, rapido e indipendente. Non confermerà che i tuoi server e dispositivi siano sicuri al 100%. Consideralo come uno dei tanti strumenti che dovresti usare per controllare il tuo ambiente IT. Può essere usato su indirizzi IP privati e pubblici.
Lo script non è una dimostrazione dello sfruttamento di log4shell. Non causerà alcun danno né tenterà di eseguire codice remoto.
Lo script crea una richiesta HTTPS (porte che terminano con 443) o HTTP (tutte le altre porte), con una stringa speciale nei campi: User-Agent, X-Api-Version e X-Forwarded-For. Questa stringa speciale è nel formato ${jndi:ldap://some_listen_host:port} .
Se una libreria log4j vulnerabile viene utilizzata per registrare l'attività dell'utente (la nostra richiesta http) da qualche parte nel percorso “utente -> servizio | bilanciatori di carico -> sicurezza -> server -> registrazione”, analizzerà la stringa JNDI e tenterà di stabilire una sessione LDAP verso il nostro some_listen_host:port.
Se monitoriamo il traffico su some_listen_host:port e individuiamo tali pacchetti, la loro origine dovrebbe essere esaminata ulteriormente.
Le porte predefinite a cui vengono inviate le richieste http(s) sono 80, 8080, 443 e 8443.
Questi due host possono essere la stessa macchina.
Sull'host di ascolto, avvia tcpdump per catturare i pacchetti ricevuti su una porta TCP libera. Esempio:
tcpdump -nn -i ens160 tcp port 12345
Sull'host Linux, esegui lo script con i parametri richiesti. Esempio:
./log4j-quick-scan.py -e 192.168.0.3:12345 192.168.0.0/24"
Questo testerà la rete 192.168.0.0/24 tentando di attivare una connessione TCP verso l'host di ascolto 192.158.0.3 sulla porta 12345.
Monitora l'output di tcpdump sull'host di ascolto. I target sospetti di vulnerabilità log4j analizzeranno la stringa JNDI e tenteranno di stabilire una connessione LDAP.
È inefficace ed estremamente lento scansionare tutte le porte. Poiché la libreria log4j è usata in molti prodotti, determina prima quali porte web sono utilizzate nel tuo ambiente. Esegui lo script con il tuo elenco di porte personalizzato.
Ci sono troppi elementi che possono impedire allo script e ad altri strumenti di scoprire esternamente la vulnerabilità log4j. Alcuni di essi sono: firewall di rete e server, web application firewall, porte TCP personalizzate, software/servizi che non registrano eventi a bassa severità (come la nostra normale richiesta http), script che accede all'indirizzo IP invece del hostname richiesto, ecc…
Controlla sempre i progetti open source o gli avvisi dei fornitori di software per i dettagli sul problema log4j.
usage: log4j-quick-scan.py [-h] [-V] -e LISTENHOST [-p PORTS] [-l LOG] target
Scan hosts with log4j+jndi doing external connections.
required arguments:
-e LISTENHOST, --listenhost LISTENHOST
Host[:port] where to monitor tcp connections. It could be the same machine where script is to be run.
optional arguments:
-h, --help show this help message and exit
-V, --version Display version and exit.
-p PORTS, --ports PORTS
Optional, comma separated list of ports on tested hosts. Default: 80,8080,443,8443
-l LOG, --log LOG Optional, append output to custom log file. Default: ./log4j-quick-scan.log
positional arguments:
target Scan target: IP network in CIDR format.