Jak ověřit linux Apache server zranitelnost Log4j?

Apache Log4j je logovací linux apache server nástroj založený na Javě, jehož původním autorem je Ceki Gülcü. Obsahuje jednu z nejzávažnějších chyb za posledních několik let. Chyba má označení CVE-2021-44228. Framewrok je součástí Apache Logging Services, projektu Apache Software Foundation. Je jedním z několika logovacích frameworků v jazyce Java. Gülcü od té doby založil projekty SLF4J, reload4j a Logback se záměrem nabídnout nástupce.

Tým Apache vyvinul verzi 2 jako reakci na problémy verze 1.2 a 1.3, java.util.logging a Logback a vyřešil problémy, které se v těchto frameworcích objevily. Kromě toho verze 2 nabídla architekturu zásuvných modulů, díky níž je rozšiřitelnější než jeho předchůdce. Verze 2 není zpětně kompatibilní s verzemi 1.x, i když je k dispozici „adaptér“. Dne 5. srpna 2015 oznámil výbor pro řízení projektu Apache Logging Services, že 1 dosáhl konce životnosti a že uživatelům verze 1 se doporučuje přejít na verzi 2.

Exploitace zranitelnosti

Pokud byl vůči serveru proveden přímo pokus o exploitaci (využití) zranitelnosti, v chybovém záznamu serveru error.log najdete řetězec začínající protokolem připojení ldap://

ldap://167.71.13.196:443/lx-ffff2d58bc56901f08ac6dcd6100000000cb0d6e

V případě, že vedete a využíváte záznam přístupu na server, uvedený řetězec najdete i v access.log souboru. Lze k tomu využít příkaz pro zobrazení hlaviček prohlížečů (používaný například k statistickému výpisu návštěv bad bots)..

cat /var/log/housing/httpd/*/*.log | awk -F\" '{print $6}' | sort | uniq -c | sort -n

Prohledat všechny logy lze i pomocí grep na přítomnost výrazu ldap

grep ldap * -d recurse -l /var/log/housing/httpd/

Nebo všechny i odrotované logy

mkdir /tmp/4j
cp /var/log/housing/httpd/*.gz /tmp/4j
gunzip /tmp/4j/*.gz
grep ldap * -d recurse -l /tmp/4j/
rm -rf /tmp/4j/

Test na Log4j zranitelnost

Zranitelnost lze otestovat například pro tento účel připraveným skriptem z github

wget https://raw.githubusercontent.com/rubo77/log4j_checker_beta/main/log4j_checker_beta.sh -q -O - | bash

Výstup testovacího skriptu

[INFO] using default hash file. If you want to use other hashes, set another URL as first argument
[INFO] Created vulnerable hashes file from https://raw.githubusercontent.com/rubo77/log_checker_beta/main/hashes-pre-cve.txt

[INFO] Looking for files containing log...
[INFO] locate is not installed, using slower find method
[INFO] No files containing log..

[INFO] Checking installed packages: (solr\|elastic\|log)
[INFO] No dpkg packages found

[INFO] Checking if Java is installed...
[INFO] Java is not installed

[INFO] Analyzing JAR/WAR/EAR files in /var /etc /usr /opt /lib*  ...
[INFO] Also checking hashes
........
[INFO] Found 8 files in unpacked binaries containing the string 'log' with 0 vulnerabilities
[INFO] _________________________________________________
[WARNING] Some apps bundle the vulnerable library in their own compiled package, so even if 'java' is not installed, one of the applications could still be vulnerable.

[WARNING] This script does not guarantee that you are not vulnerable, but is a strong hint.

find dpkg locate

Další možností je prohledat linux server pomocí příkazů dpkg, find a locate

find / -name log4j-core-*.jar
locate log4j | grep -v log4js
dpkg -l | grep liblog4j
dpkg -l | grep log4

Vizualizace

Log4j apache java zranitelnost shell
Log4j linux konzola testovací skript

Užitečné

Jak číst HTTP server apache log
Kalkulačka zranitelnosti NVD
Log4j exploit v exploit-db.

ICTIS.CZ