
نصوص Bash وPowerShell لفحص نظام ملفات محلي عن ملفات Log4j .jar التي قد تكون عرضة للخطر في CVE-2021-44228 والمعروفة باسم Log4Shell.
يحتوي هذا المستودع على نصوص برمجية يمكن أن تساعد في تحديد ملفات .jar التي قد تكون معرضة للخطر CVE-2021-44228 المعروف باسم Log4Shell.
يقوم هذا النص البرمجي بالبحث عن ملفات .jar داخل نظام الملفات بدءًا من مسار محدد، وحساب هاش SHA-256 لكل ملف .jar يتم العثور عليه - بغض النظر عن اسم الملف - ومقارنة هذه القيمة مع قائمة هاشات SHA-256 يقدمها المستخدم.
ملفات الهاش المعروفة المحسوبة مقابل إصدارات Log4j الرسمية متاحة من https://github.com/mubix/CVE-2021-44228-Log4Shell-Hashes، وهو مصدر ملف الهاش المضمن في هذا المستودع.
ملاحظة: إذا تم تعديل ملف .jar الخاص بـ Log4j المستخدم في نظامك - على سبيل المثال - لأنه تم تجميعه من المصدر، أو لأن البائع طبق تخصيصات من أي نوع، أو لأن فئات Log4j تم تضمينها داخل ملف .jar أكبر، فإن هاش SHA-256 الخاص به سيختلف عن الإصدار الرسمي المقابل لـ Log4j ولن يتمكن النص البرمجي من تحديده.
log4shell_hash_check.sh <path> <sha256file>
مثال: sudo ./log4shell_hash_check.sh / sha256sum.txt
sudo ./log4shell_hash_check.sh ./ sha256sum.txt
sudo ./log4shell_hash_check.sh /opt/tomcat/ sha256sum.txt
log4shell_hash_check.ps1 -path <path> -hashfile <sha256file>
مثال: .\log4shell_hash_check.ps1 -path c:\ -hashfile sha256sum.txt
.\log4shell_hash_check.ps1 -path .\ -hashfile sha256sum.txt
.\log4shell_hash_check.ps1 -path c:\opt\tomcat\ -hashfile sha256sum.txt
OccamSec $ ./log4shell_hash_check.sh ./ log4j_2.x_sha256sum.txt
Please be patient, scanning the file system for .jar files starting at ./
.//apache-log4j-2.13.1-bin/log4j-flume-ng-2.13.1.jar
.//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
[CUT]
.//apache-log4j-2.13.1-bin/log4j-mongodb2-2.13.1.jar
.//apache-log4j-2.13.1-bin/log4j-to-slf4j-2.13.1-sources.jar
.//apache-log4j-2.13.1-bin/log4j-to-slf4j-2.13.1-javadoc.jar
.//apache-log4j-2.13.1-bin/log4j-appserver-2.13.1-javadoc.jar
.//apache-log4j-2.13.1-bin/log4j-appserver-2.13.1-sources.jar
Checking hash 6f38a25482d82cd118c4255f25b9d78d96821d22bab498cdce9cda7a563ca992 .//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
>>> MATCH: 6f38a25482d82cd118c4255f25b9d78d96821d22bab498cdce9cda7a563ca992 .//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
Checking hash eafab7995f042e0386e08fa5e299d63465b63f1e4e5cb754612c68d52b72516d .//apache-log4j-2.13.1-bin/log4j-appserver-2.13.1-sources.jar
List of .jar files found under ./ (if any) saved as ./jarfiles.txt
List of .jar files matching user-provided Log4j hashes (if any) saved as ./matchinglog4j.txt
يقوم هذا النص البرمجي بالبحث عن ملفات .jar داخل نظام الملفات بدءًا من مسار محدد وفحصها للتحقق مما إذا كانت تحتوي على فئة JndiLookup. إذا كان الأمر كذلك، فسيقوم النص البرمجي باستخراج معلومات من ملف manifest لملف .jar والتي يجب أن تساعد في تحديد ما إذا كان ملف .jar يحتوي على إصدار Log4j، وما إذا كان هذا الإصدار معرضًا للخطر. أخيرًا، سيقوم النص البرمجي بحساب هاش SHA-256 للاكتمال.
الأمر متروك للمستخدم لتحديد ما إذا كان سيتم استخدام هذا النص البرمجي كأداة مساعدة لـ "فحص هاش Log4Shell" أو كأداة مستقلة.
log4shell_jndilookup_finder.sh <path>
مثال: sudo ./log4shell_jndilookup_finder.sh /
sudo ./log4shell_jndilookup_finder.sh ./
sudo ./log4shell_jndilookup_finder.sh /opt/tomcat/
log4shell_jndilookup_finder.ps1 -path <path>
مثال: .\log4shell_jndilookup_finder.ps1 -path c:\
.\log4shell_jndilookup_finder.ps1 -path .\
.\log4shell_jndilookup_finder.ps1 -path c:\opt\tomcat\
OccamSec $ ./log4shell_jndilookup_finder.sh ./
Please be patient, scanning the file system for .jar files starting at ./
.//apache-log4j-2.13.1-bin/log4j-flume-ng-2.13.1.jar
.//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
[CUT]
.//apache-log4j-2.13.1-bin/log4j-mongodb2-2.13.1.jar
.//apache-log4j-2.13.1-bin/log4j-to-slf4j-2.13.1-sources.jar
.//apache-log4j-2.13.1-bin/log4j-to-slf4j-2.13.1-javadoc.jar
.//apache-log4j-2.13.1-bin/log4j-appserver-2.13.1-javadoc.jar
.//apache-log4j-2.13.1-bin/log4j-appserver-2.13.1-sources.jar
-------------------------------------------
>>> JndiLookup.class found in: .//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
PACKAGE INFORMATION:
Automatic-Module-Name: org.apache.logging.log4j.core
Bundle-Name: Apache Log4j Core
Bundle-SymbolicName: org.apache.logging.log4j.core
Implementation-Title: Apache Log4j Core
Implementation-URL: https://logging.apache.org/log4j/2.x/log4j-core/
Implementation-Vendor-Id: org.apache.logging.log4j
Specification-Title: Apache Log4j Core
VERSION INFORMATION:
Bundle-Version: 2.13.1
Implementation-Version: 2.13.1
Log4jReleaseVersion: 2.13.1
Specification-Version: 2.13.1
SHA-256 hash:
6f38a25482d82cd118c4255f25b9d78d96821d22bab498cdce9cda7a563ca992 *.//apache-log4j-2.13.1-bin/log4j-core-2.13.1.jar
List of .jar files found under ./ (if any) saved as ./jarfiles.txt
Details about .jar files containing 'JndiLookup.class' (if any) saved as ./jndilookup_jarfiles.txt