
استغلال قراءة ملفات عشوائية بدون مصادقة لـ Jenkins CVE-2024-23897، مع دعم HTTPS و CSRF-crumb لتجاوز الحالات المحصّنة.
cve-2024-23897-crumb.py — قراءة ملفات عشوائية غير مصادق عليها ضد
Jenkins <= 2.441 / LTS <= 2.426.2 (تم الإصلاح في 2.442 / LTS 2.426.3).
إن PoCs المستخدمة على نطاق واسع — exploit-db 51993، xaitax/CVE-2024-23897، و قالب nuclei الخاص بـ ProjectDiscovery — هي HTTP فقط ولا ترسل CSRF crumb. ضد مثيل Jenkins يكون:
تفشل مع 403 No valid crumb was included in the request، وهو ما لا يمكن
تمييزه عن "تم التصحيح" وينتج نتيجة سلبية خاطئة.
هذا المتغير:
--http)؛JSESSIONID مطابق من صفحة خطأ
/cli غير المصادق عليها، ثم يعيد تشغيلها على القناة المزدوجة؛النتيجة الصافية: يكتشف ويستغل المثيلات المحصّنة-ولكن-غير-المصححة التي تعتبرها الأدوات العامة آمنة.
python3 cve-2024-23897-crumb.py <host> [file] [--http] [--port N]
python3 cve-2024-23897-crumb.py jenkins.example.com
python3 cve-2024-23897-crumb.py jenkins.example.com /etc/shells
python3 cve-2024-23897-crumb.py 10.0.0.5 /etc/passwd --http --port 8080
مكتبة Python 3 القياسية فقط. للقراءة فقط: يرسل help "@<file>"؛ لا يتم
كتابة أو رفع أو تنفيذ أي شيء.
help يعيد صدى السطر(الأسطر) الأولى من الملف — السطر الأول في رسالة
Too many arguments: بالإضافة إلى الأسطر التالية في حقل (default: ...).
يعمل جيدًا على الملفات التي يحمل سطرها الأول عدة حقول أو يكون طويلًا:
/etc/passwd، /etc/shells/proc/net/arp، /proc/net/route (عناوين IP داخلية، بوابة، عناوين MAC)/proc/mounts (تخطيط الحاويات/التخزين)الملفات ذات السطر الأول القصير جدًا (مثل /etc/hostname) تسقط في مسار
خطأ المصادقة ولا تُرجع شيئًا عبر help. استخراج الملف الكامل يستخدم أمر
connect-node بدلاً من ذلك، لكن ذلك يتطلب أن يمتلك المستخدم المجهول
Overall/Read — غالبًا غير ممنوح، وفي هذه الحالة لا يزال بدائي القراءة يعمل
لكن تعود الأسطر الأولى فقط.
وجّهه فقط إلى المضيفين المصرّح لك باختبارهم. نفس القناة تكشف أوامر CLI
المغيّرة للحالة (enable-job، reload-configuration، …)؛ هذا السكربت
يستخدم عمدًا مسار help للقراءة فقط.