
Scanner récursif de fichiers développé en Python 3 pour localiser et analyser les versions vulnérables de Log4j2, incluant l'analyse interne des fichiers JAR (CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 et CVE-2021-44832)
████████████████▀███████████████████████████████████████████████████████████████████ █▄─▄███─▄▄─█─▄▄▄▄█░█░████▄─▄█▀▀▀▀▀██▄─▄▄─█▄─▄█▄─▄███▄─▄▄─█─▄▄▄▄█─▄▄▄─██▀▄─██▄─▀█▄─▄█ ██─██▀█─██─█─██▄─█▄▄░██─▄█─██████████─▄████─███─██▀██─▄█▀█▄▄▄▄─█─███▀██─▀─███─█▄▀─██ ▀▄▄▄▄▄▀▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▀▄▄▄▀▀▀▀▀▀▀▀▀▀▄▄▄▀▀▀▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▀▄▄▀▄▄▄▀▀▄▄▀ par Renato Andalik (@andalik)
Simple et direct... Aucune pratique requise, ni même de compétences !
Log4j-FileScan est un script développé en Python 3 pour effectuer une analyse complète d'un système de fichiers à la recherche de versions vulnérables du framework Log4j2, comme décrit dans CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 et CVE-2021-44832.
L'analyse est effectuée de manière récursive, à la fois sur le disque et dans les fichiers Java Archive (JARs).

Pour optimiser la vitesse d'analyse, la recherche s'effectue UNIQUEMENT sur les fichiers liés au problème :
Java ARchive (y compris dans les fichiers compressés avec zip) :
*.jar, *.war, *.ear et *.zipSi un fichier avec l'une des extensions mentionnées ci-dessus est localisé, l'analyse des fichiers internes a lieu (tout en mémoire).
Le script peut être téléchargé et utilisé de 2 manières distinctes :
Pour faciliter encore plus les choses, nous avons tout compilé et mis à disposition un binaire exécutable.
Il suffit de télécharger la version correspondant à votre système d'exploitation, d'ouvrir l'invite de commandes et d'exécuter :
Windows: log4j-filescan.exe
IMPORTANT : En raison du modèle d'empaquetage fourni par PyInstaller (tout dans un seul exécutable), certains antivirus peuvent générer une alerte de faux positif. Il suffit alors d'ajouter l'exécutable à la liste des exceptions de votre antivirus.
Linux: log4j-filescan
Sous Linux, via la console, vous pouvez également utiliser wget pour obtenir le binaire :
wget https://github.com/andalik/log4j-filescan/releases/download/v1.1.1/log4j-filescan -O log4j-filescan
chmod +x log4j-filescan
sudo ./log4j-filescan
Pour les distributions Linux avec Python 3.6+ installé, utilisez l'une des méthodes ci-dessous :
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
Télécharger Python 3.6 ou une version supérieure sur https://www.python.org/downloads/
Add Python 3.x to PATH.Ouvrir l'invite de commandes et exécuter pip pour installer pyinstaller :
pip install pyinstaller
pip install colorama
Télécharger la dernière version du script log4j-filescan.py et exécuter PyInstaller :
pyinstaller --onefile --hidden-import colorama log4j-filescan.py
L'exécutable Windows sera créé dans le répertoire dist : dist\log4j-filescan.exe
Exemple pour 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:\.Ouvrez PowerShell (de préférence avec « Run as Administrator ») et saisissez :
python3 log4j-filescan.py c:\ d:\ e:\
L'outil effectuera l'analyse sur C:, puis sur D:\ et enfin sur E:. Si un lecteur n'existe pas, l'outil ignorera simplement le lecteur indiqué sans afficher d'erreur. Tout sera enregistré à l'écran (quels fichiers vulnérables ont été trouvés sur quel lecteur).