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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
fastjson-jsontype-rce-lab — مختبرات Docker + ماسح دفاعي لثغرة RCE عبر تحميل الفئات عن بُعد في fastjson. fastjson 1.2.66-1.2.83: استكشاف موارد @JSONType (CVE-2026-16723). fastjson2 2.0.57: يصل @type الخاص بالمهاجم إلى loadClass مع تعطيل autoType عبر الأنواع متعددة الأشكال (@JSONType(seeAlso) / Jackson @JsonSubTypes). حمولات تقتصر على العلامات فقط؛ مع ضوابط safeMode + JDK17. | Kitploit
أدوات/GitHubGitHub/dinosn/fastjson-jsontype-rce-lab
التحليل الثابتالتحليل الديناميكي (عزل)تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
GitHub
dinosn/fastjson-jsontype-rce-lab

fastjson-jsontype-rce-lab

عرض المستودع
2039212منذ 2 أشهرتمت المراجعة من قبل Kitploit

حول

مختبرات Docker + ماسح دفاعي لثغرة RCE عبر تحميل الفئات عن بُعد في fastjson. fastjson 1.2.66-1.2.83: استكشاف موارد @JSONType (CVE-2026-16723). fastjson2 2.0.57: يصل @type الخاص بالمهاجم إلى loadClass مع تعطيل autoType عبر الأنواع متعددة الأشكال (@JSONType(seeAlso) / Jackson @JsonSubTypes). حمولات تقتصر على العلامات فقط؛ مع ضوابط safeMode + JDK17.

مشاركة

مختبر وكشف سلسلة remote-JAR/FD-chain لـ Fastjson @JSONType

يحتفظ هذا المستودع الآن بمساري بحث متميزين لـ Fastjson:

  • modern-fd/ هو إعادة البناء الموصى بها والمقتصرة على العلامات فقط لسلسلة 1.2.83 أحادية الجسم لـ Fastjson عبر remote-JAR/وصف الملف على Spring Boot 3 وTomcat المضمّن العادي وJDK 17. يستخدم المستقبل الحرفي الثابت JSON.parseObject(body, BoundEnvelope.class) مع تعطيل AutoType.
  • المختبر الأصلي في Docker Compose على المستوى الأعلى يحتفظ بمسار الفئة البعيدة المباشر القديم على JDK 8. وهو قادر على تنفيذ الأوامر وينبغي التعامل معه كإثبات قديم ومعزول وليس كطريقة JDK الحديثة.
  • يحتوي scanner/ على كشف سلبي للطلبات/السجلات، وجرد ثابت للقطع الأثرية، ومسبار وصول غير منفّذ للأكواد.

الخلل: يستعلم ParserConfig.checkAutoType عن كل قيمة @type بحثًا عن تعليق @JSONType عبر تنفيذ getResourceAsStream(typeName.replace('.','/') + ".class"). على مجموعات Linux/JDK الحديثة، يمكن لمسبار jar:http عن بُعد أن يترك JAR مخزّنًا مؤقتًا خلف واصف مفتوح؛ ويمكن لمسبارات لاحقة jar:file:/proc/self/fd/N في نفس الجسم إعادة فتحه تحت أسماء فئات صالحة وتهيئة فئة مُعلَّقة. يعمل تركيب 1.2.83 الدقيق مع تعطيل AutoType وعبر DTO ثابت يحتوي على List<Object>. لذلك فإن مجرد الربط ليس تخفيفًا. الشرح الكامل: docs/MECHANISM.md.

النتائج المستخلصة من مراجعة الأمان

غطّت المراجعة المصاحبة للمشروع بأكمله 2,041 صفًا من الاستدعاءات/المُهيّئات الثابتة عبر جميع ملفات Fastjson 1.2.83 الإنتاجية البالغ عددها 193 ملف Java. يعطي الجدول أدناه الأولوية للنتائج الأكثر تأثيرًا؛ وهو ليس ادعاءً بأن كل نشر لـ Fastjson متأثر. يعيد هذا المستودع إنتاج F105 مباشرةً. وتلخّص الإدخالات المتبقية مراجعة المصدر المستقلة والمغلفة والأدلة المختبرية المحدودة.

الأولويةالنتيجةالنتيجة المُثبتةالحدود المهمة
1F105 — تنفيذ bytecode عن بُعد عبر @JSONTypeتهيئة فئة مقدَّمة من المهاجم عبر محمّلات Spring Boot المتوافقة، بما في ذلك المسار المباشر على JDK 8 واستمرارية JAR المحتفَظ بها /proc/self/fd/N على Linux/JDK 17يتطلب حامل @type يمكن الوصول إليه من المحلِّل، ومحمّل Boot/TCCL متوافقًا، ووصولًا صادرًا، وتعطيل SafeMode/IgnoreAutoType، وJAR دقيق من المهاجم. كما يحتاج مسار DTO الثابت الحديث إلى مسار قيمة عامة (يستخدم المختبر List<Object>) وprocfs على Linux وواصفًا محتفَظًا ومطابقة دقيقة للأسماء؛ وهي ليست عامة عبر كل JDK أو محمّل أو نظام تشغيل
2F1/F45 — تنفيذ أوامر عبر TemplatesImplتنفيذ أوامر بالعلامات عبر واجهة DTO الثابتة، بما في ذلك خاصية جسم مهملةيتطلب سياسة خادم مُضعَفة: قبول الفئات، وAutoType، وملء الحقول الخاصة أو مسارات مكافئة؛ الإعدادات الافتراضية النقية تمنعه
3F70/C016 — تخزين مؤقت غير محدود وتوسعة GZIPمسارات byte/InputStream المعنونة وDTO المُعلَّقة تتوسع أو تُخزَّن مؤقتًا دون سقف إخراج؛ تم إعادة إنتاج Java OOME بكومة مقيدةيلزم الوصول إلى نقطة النهاية/المخطط وبايتات المهاجم؛ لم يتم إثبات انقطاع على نطاق الإنتاج
4F18/C089 — استنفاد مكدس خيط المحلِّليمكن لقيم الكائنات العادية المتداخلة بعمق إنتاج StackOverflowError ضمن التحليل الافتراضيتأثير على توافر خيط الطلب؛ وليس تعطلًا دائمًا على مستوى JVM أو الخدمة
5F120/C162 — SSRF عبر HTTP و/أو تحميل موارد محلية بمخطط ثابتJEditorPane/JTextPane.page المتحكَّم فيه من الجسم ينفذ طلبات HTTP ويمكنه تحميل محتوى file: محدود في حالة Documentيتطلب أن يصرّح التطبيق بنوع Swing؛ لم يتم إثبات أي تسريب تلقائي للاستجابة أو RCE
6F118/C160 — فشل التفويض/سلامة البيانات عبر تصادم التجزئةيمكن لتصادم Unicode مميز في FNV-1a-64 الارتباط بثابت enum متميز أو توجيه تغيير JSONPath إلى مَعيّن bean خاطئيتطلب تصادمًا قابلًا للاستخدام وثقة في المصب أو عملية تغيير JSONPath مكشوفة؛ لا قبول للفئات ولا RCE
7F121/C163 — قابلية الوصول إلى JNDI عبر JdbcRowSet الثابتتسبّب ترتيب المَعيّنات الدقيق في اتصال JNDI/LDAP صادر واحد تحدده الجسمالأدلة تتوقف عند اتصال: لا استجابة تسمية، ولا مصنع كائنات، ولا تحميل bytecode، ولا RCE
8F2/F45 — تحليل DNS الافتراضييعمل تحليل اسم المضيف المتحكَّم فيه من المهاجم تحت الإعداد الافتراضي وعبر خاصية DTO ثابتة مهملةتفاعل DNS/OOB فقط، وليس SSRF عام عبر HTTP أو RCE

انظر findings/FINDINGS.md للحصول على وسوم التحقق والمتطلبات المسبقة والنتائج الأدنى ترتيبًا وأولويات المعالجة والحدود السلبية الصريحة.

⚠️ للاستخدام المصرَّح به فقط

هذا المستودع مخصص لـ التعليم والبحث الدفاعي والاختبار المصرَّح به للأنظمة التي تملكها أو يُسمح لك صراحةً باختبارها. يُرجى، عند دعم النشر المضيف للشبكة الداخلية للمختبر الحديث، قصره على 127.0.0.1 فقط؛ فسكربتاته تقود الاختبار بالكامل داخل تلك الشبكة المعزولة. لا يملك المختبر الحديث أي بدائية لتنفيذ العمليات، ويضع فقط علامة ثابتة داخل JVM. أما مختبر JDK 8 القديم فينفذ id ويكتب مخرجه إلى /tmp/PWNED؛ أبقِه معزولًا. لا توجّه الاستغلال القديم أو المسبار النشط إلى أنظمة غير مصرَّح بها.

افحص بيئتك الخاصة

يوفّر دليل scanner/ أربع أدوات Python 3 بدون أي تبعيات (بدون تثبيت pip).

  • fjdetect.py — يفحص سلبيًا أجسام طلبات JSON المفكوكة أو سجلات JSON المنظمة بحثًا عن بذور remote-JAR وتسلسلات /proc/self/fd أو /dev/fd.
  • fjscan_static.py — يجرد ملفات jars/wars/ears بحثًا عن التركيبة القابلة للاستغلال (محتوى 1.2.83 مُتحقَّق منه وموثَّق × محتوى فئة محمّل Spring Boot الفعلي). ويُبلَّغ بشكل منفصل عن إصدارات 1.2.48–1.2.82 التي تحمل مسبارًا والمرشحين المعتمدين على البيانات الوصفية/أسماء الملفات فقط للمراجعة. مناسب لبوابات CI (رمز خروج 2 عند EXPOSED).
  • fjscan_probe.py — فحص وصول نشط وآمن: يطلق @type نحو كَنَري تتحكم فيه (مستمع مدمج أو Burp Collaborator / interactsh) ويربط استدعاء جلب المورد. يعيد مستمعه المدمج 404 فارغًا؛ اضبط المستمعات الخارجية بشكل مكافئ. لا يثبت الاستدعاء تحميل الفئة أو RCE.
  • fjpayload.py — يولّد أجسام جلب موارد بعيدة للاختبار اليدوي؛ استخدم فقط مستمعًا فارغًا/404 عندما لا يكون التنفيذ مقصودًا.
# 1) passive request/log inspection
python3 scanner/fjdetect.py --ndjson gateway.jsonl

# 2) inventory build artifacts / unpacked images (parallel)
python3 scanner/fjscan_static.py /path/to/artifacts --threads 16

# 3) active probe across many domains — simplest: --auto fires baseline + plain + escaped comparison
#    DNS probes per target and prints a rollup; DNS callbacks land in your Burp Collaborator
python3 scanner/fjscan_probe.py --collaborator <sub>.oastify.com --auto --targets domains.txt --threads 50
cat domains.txt | python3 scanner/fjscan_probe.py --collaborator <sub>.oastify.com --auto --targets -

# 4) bulk fetch payloads for manual testing (one per domain, stable correlation token)
python3 scanner/fjpayload.py <collab-or-ip> --targets-file domains.txt

domains.txt = هدف واحد لكل سطر — إما [METHOD ]URL كاملة أو اسم نطاق مجرد (يُوسَّع عبر --scheme / --target-port / --path)؛ التعليقات التي تبدأ بـ # مسموحة:

api.internal.example
POST https://svc.example/v1/ingest
10.0.0.7:8080

الخيارات

fjscan_probe.py (المسبار النشط)

تنزيل الأداة