Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33439 — أول تنفيذ استغلال مُشارَك علنًا لثغرة CVE-2026-33439 (RCE قبل المصادقة في OpenAM عبر إلغاء تسلسل jato.clientSession). | Kitploit
أدوات/GitHubGitHub/themalwareguardian/cve-2026-33439
تحليل الثغرات الأمنيةتحليل الكودالاستغلالالهندسة العكسيةاستغلال تطبيقات الويبتحليل البرمجيات الخبيثةاختبار الاختراقالتعلم والتعليمتطوير الحمولات
استغلال الملفات الثنائية
مختبرات وتدريب عملي
GitHubthemalwareguardian/cve-2026-33439

CVE-2026-33439

أول تنفيذ استغلال مُشارَك علنًا لثغرة CVE-2026-33439 (RCE قبل المصادقة في OpenAM عبر إلغاء تسلسل jato.clientSession).

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

الأكثر شعبية

عرض الكل →

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

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

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

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

🐞 CVE-2026-33439: تنفيذ التعليمات البرمجية عن بُعد قبل المصادقة في OpenAM عبر إلغاء تسلسل jato.clientSession

رؤية بشرية + تحليل بمساعدة الذكاء الاصطناعي + هندسة عكسية + استشارة ← استغلال

أول تنفيذ استغلال مُشارك علنًا لـ CVE-2026-33439

ثغرة إلغاء تسلسل Java غير مصادق عليها في ForgeRock OpenAM تسمح بتنفيذ كامل للتعليمات البرمجية عن بُعد عبر كائنات جلسة JATO مُصمّمة. النهر نفسه يجري مرتين، أصلحوا jato.pageSession (CVE-2021-35464) ونسوا jato.clientSession (CVE-2026-33439). سلسلة أدوات إلغاء التسلسل لا تطلب بيانات اعتماد.




📑 جدول المحتويات

  • نظرة عامة
  • سلالة CVE-2021-35464
  • تحليل ثغرة CVE-2026-33439
    📂
    • السبب الجذري
    • الإصدارات المتأثرة
    • سطح الهجوم
  • سلسلة الأدوات
    📂
    • أساسيات إلغاء تسلسل Java
    • Encoder.decodeHttp64
    • تفاصيل سلسلة الأدوات الداخلية
  • بيئة المختبر
    📂
    • البنية
    • الإعداد
    • الوصول
  • الاستغلال
    📂
    • المتطلبات الأساسية
    • الاكتشاف والاستطلاع
    • فهم الترميز
    • بناء الاستغلال
    • تسليم الحمولة
    • استخدام أداة إثبات المفهوم
  • التخفيف
  • المراجع



🎯 نظرة عامة

CVE-2026-33439 هي ثغرة تنفيذ تعليمات برمجية عن بُعد قبل المصادقة في OpenIdentityPlatform OpenAM (الإصدارات الأقدم من 16.0.6). تنبع الثغرة من إلغاء تسلسل Java غير الآمن لمعامل HTTP jato.clientSession داخل ClientSession.deserializeAttributes()، والذي يستدعي Encoder.deserialize() ← ApplicationObjectInputStream.readObject() دون تطبيق قائمة بيضاء للفئات.

يرسل مهاجم غير مصادق عليه طلب HTTP GET أو POST مُصمم يحتوي على كائن Java متسلسل إلى أي نقطة نهاية JATO ViewBean يعرض ملف JSP الخاص بها وسوم <jato:form>. عند الاستلام، يقوم الخادم بإلغاء تسلسل الكائن دون تحقق، مما يؤدي إلى تشغيل سلسلة أدوات مبنية بالكامل من فئات مضمّنة في حزمة OpenAM WAR - دون الحاجة إلى مكتبات خارجية - وتنفيذ أوامر نظام تشغيل عشوائية بصلاحية مستخدم عملية التطبيق.

متجه CVSS 4.0: AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N → 9.3 حرجة

متجه CVSS 3.1: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H → 9.8 حرجة




🧬 سلالة CVE-2021-35464

هذه الثغرة هي انحدار مباشر للإصلاح غير المكتمل الذي طُبّق بعد CVE-2021-35464.

  • CVE-2021-35464 (ForgeRock AM / OpenAM): تنفيذ تعليمات برمجية عن بُعد قبل المصادقة عبر إلغاء تسلسل غير آمن لمعامل jato.pageSession. استُغلّ على نطاق واسع في البرية؛ وهو مدرج في قائمة CISA KEV. أدخل الإصلاح WhitelistObjectInputStream داخل ConsoleViewBeanBase.deserializePageAttributes() - وهي فئة فرعية مخصصة من ObjectInputStream تتحقق من كل اسم فئة مقابل قائمة بيضاء مكتوبة في الكود تضم ~40 فئة آمنة قبل إنشاء مثيل منها.

  • CVE-2026-33439 (OpenAM ≤ 16.0.5): طُبّق الإصلاح على jato.pageSession فقط. أما معامل jato.clientSession - الذي يتعامل معه مسار كود منفصل تمامًا في ClientSession.deserializeAttributes() - فلم تتم معالجته أبدًا ولا يزال يستخدم Encoder.deserialize() ← ApplicationObjectInputStream غير المفلتر، والذي يستدعي ObjectInputStream.readObject() دون قائمة بيضاء للفئات.

آلية الهجوم هي نفسها. نقطة غرق إلغاء التسلسل مختلفة. فقط اسم المعامل تغيّر.




🔬 تحليل ثغرة CVE-2026-33439

السبب الجذري

يقوم JATO بتسلسل حالة عرض الواجهة إلى معاملات HTTP باسمي jato.pageSession و jato.clientSession. عندما يصل طلب، يقوم OpenAM بإلغاء تسلسل هذه المعاملات لاستعادة حالة الواجهة قبل عرض الاستجابة. يتبع المعاملان مساري كود مختلفين تمامًا.

مسار الكود المُصحح (بعد CVE-2021-35464) لـ jato.pageSession:```java // PATCHED - ConsoleViewBeanBase.deserializePageAttributes() ObjectInputStream ois = new WhitelistObjectInputStream(new ByteArrayInputStream(decoded)); // class whitelist enforced - gadget chains blocked Object obj = ois.readObject();

مسار الكود غير المُصحَّح لـ jato.clientSession (الضُعيف):```java
// ClientSession.java
protected ClientSession(RequestContext context) {
	this.encodedSessionString =
		context.getRequest().getParameter("jato.clientSession");
}

protected void deserializeAttributes() {
	if (this.encodedSessionString != null
		&& this.encodedSessionString.trim().length() > 0) {
		this.setAttributes(
			(Map) Encoder.deserialize(
				// VULNERABLE - URL-safe base64 decode then plain ObjectInputStream
				Encoder.decodeHttp64(this.encodedSessionString), false)
		);
	}
}

Encoder.deserialize() ينشئ ApplicationObjectInputStream بسيطًا - فئة فرعية من ObjectInputStream بدون أي تصفية للفئات. يمكن إنشاء مثيل لأي فئة على classpath الخاص بـ JVM. يتم تحفيز إلغاء التسلسل أثناء تصيير JSP كلما تم تصيير وسم < jato:form >:``` getClientSession() → hasAttributes() → getEncodedString() → isValid() → ensureAttributes() → deserializeAttributes()

---

<div id="vulnerability_affected"/>

### ***النسخ المتأثرة***

| المنتج                     | النسخ المعرضة                                | الإصلاح  |
|-----------------------------|-------------------------------------------------|--------|
| OpenIdentityPlatform OpenAM | ≤ 16.0.5                                        | 16.0.6 |
| ForgeRock AM (المشتقات)    | من المحتمل أن تكون متأثرة اعتمادًا على سلسلة التصحيحات | -      |

---

<div id="vulnerability_attacksurface"/>

### ***سطح الهجوم***

أي نقطة نهاية JATO ViewBean يحتوي JSP الخاص بها على وسم *< jato:form >* تكون قابلة للاستغلال قبل المصادقة:

| نقطة النهاية             | الغرض                                 |
|---------------------------|--------------------------------------|
| /ui/PWResetUserValidation | إعادة تعيين كلمة المرور - إدخال هوية المستخدم |
| /ui/PWResetQuestion       | إعادة تعيين كلمة المرور - أسئلة الأمان  |

نقاط نهاية إعادة تعيين كلمة المرور هي الهدف الأساسي، فهي متاحة للجمهور بطبيعتها ومضمون أن تعرض وسوم *< jato:form >*.



---
---
---



<div id="gadgetchain"/>

## ***⚙️ سلسلة Gadget***

<div id="gadgetchain_deserialization101"/>

### ***أساسيات إلغاء تسلسل Java***

عندما تقوم Java بإلغاء تسلسل كائن من دفق بايت، فإنها تستدعي `readObject()` على كل فئة تعيد بنائها، بما في ذلك الكائنات المتداخلة. إذا كان المهاجم يتحكم في دفق البايت ويحقن كائنًا يتسبب استدعاء `readObject()` الخاص به في سلسلة من استدعاءات الدوال تنتهي بتنفيذ كود، فإنه يحصل على RCE عبر سلسلة Gadget.

الرؤية الرئيسية لـ CVE-2026-33439: لا تتطلب سلسلة Gadget أي مكتبات خارجية. كل فئة في السلسلة مضمّنة داخل حزمة OpenAM WAR نفسها `openam-core-16.0.5.jar, xalan-2.7.3.jar, and click-nodeps-2.3.0.jar`. <u>وهذا يجعل الثغرة قابلة للاستغلال على أي نشر افتراضي لـ OpenAM.</u>

---

<div id="gadgetchain_encoding"/>

### ***Encoder.decodeHttp64***
تنزيل الأداة