
Рекурсивный сканер файлов, разработанный на Python 3 для поиска и сканирования уязвимых версий Log4j2, включая внутренний анализ JAR-файлов (CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 и CVE-2021-44832)
████████████████▀███████████████████████████████████████████████████████████████████ █▄─▄███─▄▄─█─▄▄▄▄█░█░████▄─▄█▀▀▀▀▀██▄─▄▄─█▄─▄█▄─▄███▄─▄▄─█─▄▄▄▄█─▄▄▄─██▀▄─██▄─▀█▄─▄█ ██─██▀█─██─█─██▄─█▄▄░██─▄█─██████████─▄████─███─██▀██─▄█▀█▄▄▄▄─█─███▀██─▀─███─█▄▀─██ ▀▄▄▄▄▄▀▄▄▄▄▀▄▄▄▄▄▀▀▄▄▄▀▄▄▄▀▀▀▀▀▀▀▀▀▀▄▄▄▀▀▀▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▄▄▄▀▄▄▀▄▄▀▄▄▄▀▀▄▄▀ от Renato Andalik (@andalik)
Просто и по делу... Не требует практики, ни даже навыков!
Log4j-FileScan — это скрипт, разработанный на Python 3 для полного сканирования файловой системы в поиске уязвимых версий фреймворка Log4j2, описанных в CVE-2021-44228, CVE-2021-45046, CVE-2021-45105 и CVE-2021-44832.
Сканирование выполняется рекурсивно как на диске, так и внутри файлов Java Archive (JAR).

Для оптимизации скорости сканирования поиск производится ТОЛЬКО в файлах, связанных с проблемой:
Java ARchive (включая файлы, сжатые zip):
*.jar, *.war, *.ear и *.zipЕсли найден файл с одним из указанных расширений, выполняется сканирование внутренних файлов (всё в памяти).
Скрипт можно загрузить и использовать двумя разными способами:
Для ещё большего удобства мы скомпилировали всё и предоставили исполняемый бинарный файл.
Просто скачайте версию для вашей операционной системы, откройте командную строку и выполните:
Windows: log4j-filescan.exe
ВАЖНО: Из-за модели упаковки, предоставляемой PyInstaller (всё в одном исполняемом файле), некоторые антивирусы могут выдавать ложноположительное предупреждение. В таком случае просто добавьте исполняемый файл в список исключений вашего антивируса.
Linux: log4j-filescan
В Linux из консоли также можно использовать wget для получения бинарного файла:
wget https://github.com/andalik/log4j-filescan/releases/download/v1.1.1/log4j-filescan -O log4j-filescan
chmod +x log4j-filescan
sudo ./log4j-filescan
Для дистрибутивов Linux с установленным Python 3.6+ используйте один из методов ниже:
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
Скачайте Python 3.6 или выше с https://www.python.org/downloads/
Add Python 3.x to PATH.Откройте командную строку и выполните pip для установки pyinstaller:
pip install pyinstaller
pip install colorama
Скачайте последнюю версию скрипта log4j-filescan.py и выполните PyInstaller:
pyinstaller --onefile --hidden-import colorama log4j-filescan.py
Исполняемый файл Windows будет создан в каталоге dist: dist\log4j-filescan.exe
Пример для 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
или
$ python3 log4j-filescan.py /путь/желаемый (в Linux)
$ python3 log4j-filescan.py d:\ (в Windows)
$ python3 log4j-filescan.py /путь/файл.jar
$ python3 log4j-filescan.py /путь/кат1 /путь/кат2 /путь/файл.jar
$ python3 log4j-filescan.py / --exclude "/путь/*.war"
$ python3 log4j-filescan.py -v /путь/желаемый
$ python3 log4j-filescan.py -vv /путь/желаемый
c:\.Откройте Powershell (желательно с правами администратора) и введите:
python3 log4j-filescan.py c:\ d:\ e:\
Инструмент выполнит сканирование на C:, затем на D:\ и, наконец, на E:. Если какой-либо диск не существует, инструмент просто проигнорирует указанный диск без сообщения об ошибке. Всё будет отображено на экране (какие уязвимые файлы найдены на каком диске).