
Scanner ricorsivo di file sviluppato in Python 3 per la localizzazione e la scansione di versioni vulnerabili di Log4j2, includendo l'analisi interna dei file JAR (CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 e CVE-2021-44832)
████████████████▀███████████████████████████████████████████████████████████████████ █▄─▄███─▄▄─█─▄▄▄▄█░█░████▄─▄█▀▀▀▀▀██▄─▄▄─█▄─▄█▄─▄███▄─▄▄─█─▄▄▄▄█─▄▄▄─██▀▄─██▄─▀█▄─▄█ ██─██▀█─██─█─██▄─█▄▄░██─▄█─██████████─▄████─███─██▀██─▄█▀█▄▄▄▄─█─███▀██─▀─███─█▄▀─██ ▀▄▄▄▄▄▀▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▀▄▄▄▀▀▀▀▀▀▀▀▀▀▄▄▄▀▀▀▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▀▄▄▀▄▄▄▀▀▄▄▀ by Renato Andalik (@andalik)
Semplice e diretto al punto... Non richiede pratica, né tantomeno abilità!
Log4j-FileScan è uno script sviluppato in Python 3 per eseguire la scansione completa di un filesystem alla ricerca di versioni vulnerabili del framework Log4j2 come descritto in CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 e CVE-2021-44832.
La scansione viene eseguita ricorsivamente sia su disco che all'interno dei file Java Archive (JARs).

Per ottimizzare la velocità della scansione, la ricerca avviene SOLO sui file correlati al problema:
Java ARchive (inclusi quelli all'interno di archivi compressi con zip):
*.jar, *.war, *.ear e *.zipSe viene individuato un file con una delle estensioni sopra menzionate, viene eseguita la scansione dei file interni (tutto in memoria).
Lo script può essere scaricato e utilizzato in 2 modi diversi:
Per semplificare ulteriormente, abbiamo compilato tutto e fornito un binario eseguibile.
Basta scaricare la versione per il proprio sistema operativo, aprire il prompt dei comandi ed eseguire:
Windows: log4j-filescan.exe
IMPORTANTE: A causa del modello di impacchettamento fornito da PyInstaller (tutto in un unico eseguibile), alcuni antivirus potrebbero generare un falso positivo. In tal caso, è sufficiente aggiungere l'eseguibile all'elenco delle eccezioni del proprio antivirus.
Linux: log4j-filescan
Su Linux, tramite console, puoi anche utilizzare wget per ottenere il binario:
wget https://github.com/andalik/log4j-filescan/releases/download/v1.1.1/log4j-filescan -O log4j-filescan
chmod +x log4j-filescan
sudo ./log4j-filescan
Per distribuzioni Linux con Python 3.6+ installato, utilizza uno dei seguenti metodi:
wget https://github.com/andalik/log4j-filescan/raw/main/log4j-filescan.py
export LC_ALL=$(locale -a | grep UTF-8)
sudo python3 log4j-filescan.py
Scarica Python 3.6 o superiore da https://www.python.org/downloads/
Add Python 3.x to PATH.Apri il prompt dei comandi ed esegui pip per installare pyinstaller:
pip install pyinstaller
pip install colorama
Scarica l'ultima versione dello script log4j-filescan.py ed esegui PyInstaller:
pyinstaller --onefile --hidden-import colorama log4j-filescan.py
L'eseguibile Windows verrà creato nella directory dist: dist\log4j-filescan.exe
Esempio per Debian 11:
sudo apt update
sudo apt install python3-pip git
pip3 install --user pyinstaller
git clone https://github.com/andalik/log4j-filescan
cd log4j-filescan
~/.local/bin/pyinstaller --onefile log4j-filescan.spec
./dist/log4j-finder --help
$ python3 log4j-filescan.py
ou
$ python3 log4j-filescan.py /caminho/desejado (no Linux)
$ python3 log4j-filescan.py d:\ (no Windows)
$ python3 log4j-filescan.py /caminho/arquivo.jar
$ python3 log4j-filescan.py /caminho/dir1 /caminho/dir2 /caminho/arquivo.jar
$ python3 log4j-filescan.py / --exclude "/caminho/*.war"
$ python3 log4j-filescan.py -v /caminho/desejado
$ python3 log4j-filescan.py -vv /caminho/desejado
c:\.Apri Powershell (preferibilmente con “Run as Administrator”) e digita:
python3 log4j-filescan.py c:\ d:\ e:\
Lo strumento eseguirà la scansione su C:, poi su D: e infine su E:. Se un'unità non esiste, lo strumento ignorerà semplicemente l'unità specificata senza mostrare errori. Tutto verrà registrato a schermo (quali file vulnerabili sono stati trovati su quale unità).