Log4Shell (CVE-2021-44228) - уязвимость, обнаруженная в библиотеке журналирования Log4j, позволяющая выполнить произвольный код в атакуемой системе. Библиотека Log4j присуствует во многих корпоративных приложениях. Уязвимость набрала десять баллов из десяти возможных по шкале оценки уязвимостей CVSS v3.
В библиотеке Log4J обнаружено несколько уязвимостей CVE-2021-44228, CVE-2021-45046 и CVE-2021-45105
Подготовка к использованию сканеров
У каждого сканера есть свои зависимости: java, Python, Yara, zip, unzip или go
Для CentOS и RHEL
В CentOS и RHEL предварительно необходимо установить epel
Установка GIT
1 | yum install git |
Установка yara
1 | yum install yara |
Установка zip и unzip
1 | yum install zip unzip |
Установка Python 3
1 | yum install python3 |
Установка GO
1 | yum install go |
Установка Java
1 | yum install java |
Для Debian и Ubuntu
Установка GIT
1 | apt-get install git |
Установка yara
1 | apt-get install yara |
Установка zip и unzip
1 | apt-get install zip unzip |
Установка python3
1 | apt-get install python3 |
Утсановка GO
1 | apt-get install golang |
Установка java
1 | apt-get install default-jre-headless |
Сканер log4j от bi.zone
GIT: https://github.com/bi-zone/Log4j_Detector
Позволяет обнаружить процессы использующие log4j используя YARA.
Клонируем файлы локально и запускаем сканирования
1 2 | git clone https://github.com/bi-zone/Log4j_Detector.git cd Log4j_Detector/package/Linux/ |
Запуск сканера
1 | bash scan.sh |
по завершению сканирования, сформирует файл scan_results.txt, содержащий PID процесса использующего log4j
1 2 3 4 | cat scan_results.txt log4j_memory 964 log4j_memory 1080 log4j_memory 3623 |
Сканер log4jscanlinux от Qualys
GIT: https://github.com/Qualys/log4jscanlinux
Позволяет обнаружит уязвимые приложения.
Для работы требуется наличие улит zip и unzip
Установка сканера
1 2 | git clone https://github.com/Qualys/log4jscanlinux.git cd log4jscanlinux |
Сканирование
По умолчанию сканирует корень /, игнорируя сетевые директории.
Параметры запуска: sh ./log4j_findings.sh [base_dir] [network_filesystem_scan<true/false>]
1 | sh ./log4j_findings.sh /home false |
По окончанию сканирования, результат можно посмотреть в /usr/local/qualys/cloud-agent/log4j_findings.stderr
1 2 3 4 | cat /usr/local/qualys/cloud-agent/log4j_findings.stderr Scanning started for log4j jar Wed Dec 22 07:19:37 EST 2021 Run status : Success |
Сканер log4j-detector
Позволяет обнаруживать уязвимые версии Loj4j в файловой системе. Написан на java.
GIT: https://github.com/mergebase/log4j-detector
Установка сканера
1 2 | git clone https://github.com/mergebase/log4j-detector.git cd log4j-detector |
Запуск сканера
1 | java -jar log4j-detector-latest.jar [path-to-scan] |
Пример использования
1 2 3 4 5 | java -jar log4j-detector-latest.jar / -- github.com/mergebase/log4j-detector v2021.12.22 (by mergebase.com) analyzing paths (could take a while). -- Note: specify the '--verbose' flag to have every file examined printed to STDERR. /usr/share/elasticsearch/bin/elasticsearch-sql-cli-7.16.2.jar contains Log4J-2.x <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?) /usr/share/elasticsearch/lib/elasticsearch-log4j-7.16.2.jar contains Log4J-2.x <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?) |
Сканер log4j-finder
Сканер написанный на Python 3, обеспечивает сканирование файловой системы и поиска модуля Log4j2, уязвимого для Log4Shell. Он рекурсивно сканирует как на диске, так и внутри (вложенных) файлов архива Java (JAR).
GIT: https://github.com/fox-it/log4j-finder
Установка сканера
1 2 | curl -L https://github.com/fox-it/log4j-finder/releases/latest/download/log4j-finder -o log4j-finder chmod +x log4j-finder |
Запуск сканера
1 | ./log4j-finder |
Пример работы
1 2 3 4 5 6 7 8 9 10 11 12 | ./log4j-finder [2021-12-23 08:42:51] debian-min Scanning: / [2021-12-23 08:42:51] debian-min GOOD: /usr/share/elasticsearch/lib/elasticsearch-log4j-7.16.2.jar -> org/apache/logging/log4j/core/net/JndiManager.class [3dc5cf97546007be53b2f3d44028fa58: log4j 2.17.0] [2021-12-23 08:42:54] debian-min GOOD: /usr/share/elasticsearch/bin/elasticsearch-sql-cli-7.16.2.jar -> org/apache/logging/log4j/core/net/JndiManager.class [3dc5cf97546007be53b2f3d44028fa58: log4j 2.17.0] [2021-12-23 08:42:54] debian-min Finished scan, elapsed time: 3.78 seconds Summary: Processed 104434 files and 12503 directories Scanned 278 files Found 2 good files Elapsed time: 3.78 seconds |
Сетевой сканер log4shell - log4j-scan
Сканер написанный на Python 3, позволяет проверить наличие уязвимости удаленно.
GIT: https://github.com/fullhunt/log4j-scan
Установка сканера
1 2 3 | git clone https://github.com/fullhunt/log4j-scan.git cd log4j-scan pip3 install -r requirements.txt |
Пример сканирования
1 | python3 log4j-scan.py -u https://log4j.server.local --run-all-tests |
Сетевой сканер log4shell - log4shell-looker
Сканер написанный на go, позволяет проверить наличие уязвимости удаленно.
GIT: https://github.com/ravro-ir/log4shell-looker
Клонируем и переходим
1 2 | git clone https://github.com/ravro-ir/log4shell-looker.git cd log4shell-looker |
Пример запуска
1 2 3 4 5 6 | go run main.go --help Usage of /tmp/go-build2892693305/b001/exe/main: -mode string please usage mode [urlpath, header, useragent, cookie, contents] (default "[urlpath, header, useragent]") -url string please enter you url for scan (default "url") |
При сканировании указываем mode (header, useragent cookie, urlpath или contents) и удаленный адрес в параметре -url
1 | go run main.go -mode=header -url=https://www.example.com/ |
Сетевой сканер log4-scanner от CISA
Автоматизированный, точный и обширный сканер для поиска уязвимых хостов log4j. Написанный на Python 3.
Для работы требуются модули Python 3: python3-requests python3-crypto python3-termcolor
GIT: https://github.com/cisagov/log4j-scanner/tree/master/log4-scanner
Установка
1 2 | git clone https://github.com/cisagov/log4j-scanner.git cd log4j-scanner/log4-scanner/ |
Запуск сканера
1 | python3 log4j-scan.py -u https://log4j.server.local --run-all-tests |
CAST: CrowdStrike Archive Scan Tool
Быстрый сканер для поисках уязвимых версий log4j
GIT: https://github.com/CrowdStrike/CAST
Установка
Заходим на страницу: https://github.com/CrowdStrike/CAST/releases и выбираем архив с последней версией под Linux, к примеру cast_0.6.0_Linux_amd64.tar.gz
скачиваем и распаковываем архив
1 2 | wget https://github.com/CrowdStrike/CAST/releases/download/v0.6.0/cast_0.6.0_Linux_amd64.tar.gz tar xvf cast_0.6.0_Linux_amd64.tar.gz |
параметры запуска:
./cast scan -maxmem <максимальный размер првоеряемого файла> -recursion <максимальная глубина сканирования архива> <путь>
Пример использования
1 | ./cast scan -maxmem 1000000 -recursion 3 / |
Пример работы:
1 2 3 4 5 6 7 | ./cast scan -maxmem 1000000 -recursion 5 / {"container":"/usr/share/elasticsearch/lib/log4j-core-2.11.1.jar","member":{"path":"/org/apache/logging/log4j/core/appender/AbstractAppender$Builder.class","size":4475,"modified":"2018-07-22T20:45:18Z"},"sha256":"2784dcef2a4f05a5551e468819739f44b555ad6d9c835b5cabb6df5805633878"} {"container":"/usr/share/elasticsearch/lib/log4j-core-2.11.1.jar","member":{"path":"/org/apache/logging/log4j/core/appender/AppenderLoggingException.class","size":815,"modified":"2018-07-22T20:45:22Z"},"sha256":"bcbb46ed0993e39382230d81fd88521d22111656d2d0fe980838a1023cc5fe62"} {"container":"/usr/share/elasticsearch/lib/log4j-core-2.11.1.jar","member":{"path":"/org/apache/logging/log4j/core/appender/ConsoleAppender$Target$1.class","size":1022,"modified":"2018-07-22T20:45:22Z"},"sha256":"b31fe70889201ea90876450fd317edbef2c3d67ed03ad65d907c2700584d2ee4"} ... {"container":"/usr/share/elasticsearch/lib/log4j-core-2.11.1.jar","member":{"path":"/org/apache/logging/log4j/core/util/WatchManager$WatchRunnable.class","size":3632,"modified":"2018-07-22T20:45:18Z"},"sha256":"000ae2d2c2693ad4555b2f690bb5026a2826ad6ccf7a0862c9147249c212a7ff"} 2021/12/28 20:03:24 archives: 820 found: 708 scanned: 269633 skip: 3213 |
OpenVAS (gvm)
В OpenVAS имеется отдельный профиль для выявления Log4Shell в сети.