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.
Obsah
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

Užitečné
Jak číst HTTP server apache log
Kalkulačka zranitelnosti NVD
Log4j exploit v exploit-db.