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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
react2shell — مجموعة أدوات استغلال RCE لثغرات CVE-2025-55182 وCVE-2025-66478 في مكونات خادم React. تتضمن متغيرات متعددة للاستغلال، ونصوص اكتشاف، وخادم اختبار قابل للاستغلال، وتحليلًا تقنيًا معمقًا لثغرة إلغاء تسلسل بروتوكول Flight. | Kitploit
أدوات/GitHubGitHub/freeqaz/react2shell
التحليل الديناميكي (عزل)تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقالأوراق والأبحاثالتعلم والتعليمتطوير الحمولات
GitHubfreeqaz/react2shell

react2shell

مجموعة أدوات استغلال RCE لثغرات CVE-2025-55182 وCVE-2025-66478 في مكونات خادم React. تتضمن متغيرات متعددة للاستغلال، ونصوص اكتشاف، وخادم اختبار قابل للاستغلال، وتحليلًا تقنيًا معمقًا لثغرة إلغاء تسلسل بروتوكول Flight.

681810منذ 9 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

React2Shell: ثغرة تنفيذ التعليمات البرمجية عن بُعد (RCE) من نوع 0-day في مكونات خادم React

CVE-2025-55182 (React) و CVE-2025-66478 (Next.js)

يحتوي هذا المستودع على كود استغلال لأغراض الاختبارات الأمنية المصرح بها والتعليم فقط.

انظر أيضًا: نشر العديد من الباحثين تحليلات لهذه الثغرة. راجع قسم المراجع للحصول على وجهات نظر إضافية وتقنيات استغلال وطرق كشف.

ما هي؟

في يوم الأربعاء 3 ديسمبر 2025، تم الكشف علنًا عن ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد (RCE) في مكونات خادم React. تتيح هذه الثغرة، التي أُطلق عليها اسم «React2Shell»، لمهاجم غير مصادق تنفيذ تعليمات برمجية عشوائية على أي خادم يشغّل إصدارات ضعيفة من React RSC أو Next.js App Router عبر إرسال طلب HTTP واحد.

نظرًا لمدى انتشار Next.js - فهو يشغّل جزءًا كبيرًا من الويب الحديث - فإن تأثير هذه الثغرة بالغ الخطورة. أي تطبيق Next.js يستخدم App Router (الخيار الافتراضي للمشاريع الجديدة منذ Next.js 13) مع تفعيل RSC يكون عرضة للثغرة. لا يتطلب الأمر أي إعدادات خاصة. ولا نقاط نهاية محددة. فقط طلب POST إلى أي مسار.

تكمن الثغرة في بروتوكول «Flight» الخاص بـ React، وهو تنسيق التسلسل المستخدم لنقل البيانات بين الخادم والعميل في مكونات خادم React. إن غياب فحص hasOwnProperty أثناء إلغاء التسلسل يسمح بالتنقل عبر سلسلة النماذج الأولية (prototype chain)، وصولًا في النهاية إلى مُنشئ Function في جافاسكربت لتنفيذ تعليمات برمجية يتحكم فيها المهاجم.

توجد العلة في حزم React التالية: react-server-dom-webpack وreact-server-dom-turbopack وreact-server-dom-parcel. وNext.js، باعتبارها المستهلك المهيمن لـ RSC، ترث الثغرة عبر App Router الخاص بها.

من المتأثر؟

العديد من الخدمات معرضة للثغرة بشكل محتمل. يُعد Next.js أحد أكثر أُطر React شيوعًا، وتستخدمه شركات من جميع الأحجام - من الشركات الناشئة إلى المؤسسات الكبرى. لقد كان App Router مع مكونات خادم React البنية الافتراضية لمشاريع Next.js الجديدة منذ الإصدار 13، مما يعني أن معظم عمليات نشر Next.js الحديثة متأثرة.

أي تطبيق يستخدم:

  • مكونات خادم React (React Server Components) مع حزم react-server-dom-* الضعيفة (19.0.0 - 19.2.0)
  • Next.js App Router الإصدارات 15.x (قبل 15.0.5) و16.x (قبل 16.0.7)

يشمل ذلك عمليات النشر الإنتاجية على Vercel وAWS والبنية التحتية المستضافَة ذاتيًا وأي مكان آخر تعمل فيه تطبيقات Next.js App Router.

غير المتأثرين:

  • تطبيقات Next.js Pages Router (بدون RSC)
  • الإصدارات المستقرة من Next.js 13.x و14.x
  • التطبيقات التي تستخدم عرض React من جانب العميل فقط
  • عمليات نشر Edge Runtime (لا يتوفر process.mainModule)

الإصدارات المتأثرة

مكونات خادم React

الحزمةالإصدارات الضعيفةالإصدارات المُصحَّحة
react-server-dom-webpack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-turbopack19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
react-server-dom-parcel19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+

Next.js

خط الإصدارالإصدار الضعيفالإصدار المُصحَّح
15.0.x< 15.0.515.0.5+
15.1.x< 15.1.915.1.9+
15.2.x< 15.2.615.2.6+
15.3.x< 15.3.615.3.6+
15.4.x< 15.4.815.4.8+
15.5.x< 15.5.715.5.7+
16.0.x< 16.0.716.0.7+

التخفيف

قم بالترقية فورًا. لا توجد حلول بديلة.

لتطبيقات Next.js:

npm install next@latest
# or
pnpm update next

لاستخدام React RSC مباشرة:

npm install react-server-dom-webpack@latest

تحقق من الإصدارات المثبتة لديك:

npm ls next react-server-dom-webpack react-server-dom-turbopack

كيف يعمل الاستغلال

متطلبات الاستغلال

  1. خادم يشغّل مكونات خادم React ضعيفة (عبر Next.js App Router أو استخدام RSC مباشرة)
  2. وصول إلى الشبكة لإرسال طلب HTTP POST
  3. هذا كل شيء. لا مصادقة. لا نقطة نهاية محددة. أي مسار يعمل.

الهجوم

تم اكتشاف عدة نواقل هجوم لهذه الثغرة. الأكثر شيوعًا - وهو الذي يعمل دون أي متطلبات مسبقة - يستخدم تلوث النموذج الأولي (prototype pollution) عبر نظام المراجع في بروتوكول Flight الخاص بـ React.

يرسل الاستغلال طلب POST متعدد الأجزاء (multipart) مصنوعًا بعناية مع ترويسة Next-Action. تستغل الحمولة نظام المراجع من أجل:

  1. التنقل عبر سلسلة النماذج الأولية باستخدام $1:__proto__:then
  2. بناء كائن «chunk» مزيف يحاكي فئة Chunk الداخلية في React
  3. خداع مُلغِي التسلسل لاستدعاء مُنشئ Function في جافاسكربت
  4. تنفيذ تعليمات برمجية عشوائية عند استدعاء الدالة الناتجة ككائن قابل للربط (thenable) بوعد Promise
POST / HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----Boundary
Next-Action: x

------Boundary
Content-Disposition: form-data; name="0"

{"then":"$1:__proto__:then","status":"resolved_model","value":"{...}","_response":{...}}
------Boundary
Content-Disposition: form-data; name="1"

"$@0"
------Boundary--

يُتنفَّذ الكود أثناء إلغاء التسلسل، قبل أي تحقق من معرّف الإجراء (action ID). هذا يعني أن أي قيمة لترويسة Next-Action تُفعّل مسار الكود الضعيف - دون الحاجة إلى معرّف إجراء صالح.

توجد نواقل هجوم أخرى، بما في ذلك مراجع الدوال $F وأدوات الوحدات المباشرة (module gadgets). تتطلب هذه عادةً معرّف إجراء صالحًا. راجع نواقل الهجوم البديلة للتفاصيل.

السبب الجذري

يحل بروتوكول Flight الخاص بـ React المراجع مثل $1:path:to:value بتقسيمها على النقطتين الرأسيتين (:) والتنقل عبر الكائن:

// ReactFlightReplyServer.js - getOutlinedModel()
for (let i = 1; i < path.length; i++) {
  value = value[path[i]];  // No hasOwnProperty check!
}

المفارقة: في أعلى هذا الملف نفسه، السطر 35:

import hasOwnProperty from 'shared/hasOwnProperty';

تم استيراد الحارس. كان متاحًا. لكنه لم يُستخدم في الحلقة الوحيدة التي كان فيها في أمسّ الحاجة.

يسمح هذا الفحص المفقود الوحيد لـ $1:__proto__:then بالتنقل من كائن chunk، عبر سلسلة النماذج الأولية، إلى Chunk.prototype.then - وهي دالة تعالج الكائنات الشبيهة بالوعود (Promise). من خلال صياغة chunk مزيف بالخصائص الصحيحة، نتحكم في الكود الذي سيتم تنفيذه.

إعادة الإنتاج محليًا

استنسِخ خادم الاختبار الضعيف:

git clone https://github.com/freeqaz/react2shell
cd react2shell/vulnerable-next-server
pnpm install
pnpm dev

في طرفية أخرى:

./detect.sh http://localhost:3443

يعيد الخادم الضعيف HTTP 500 مع E{"digest" في نص الاستجابة. لإظهار RCE:

./exploit-redirect.sh http://localhost:3443 "id"

يظهر مخرَج الأمر في الاستجابة. للاستكشاف التفاعلي:

./shell.sh http://localhost:3443

ماذا يوجد في هذا المستودع

خادم الاختبار الضعيف

يحتوي دليل vulnerable-next-server/ على تطبيق Next.js 16.0.6 + React 19.2.0 مُهيأ مسبقًا للاختبار المحلي الآمن. يعمل على المنفذ 3443 افتراضيًا. هذا إعداد App Router بسيط يوضح أن التكوينات الافتراضية معرضة للثغرة.

سكربتات الاستغلال

طورنا عدة أشكال من الاستغلال للتعامل مع سيناريوهات مختلفة:

السكربتHTTPالمخرَجالإنتاجملاحظات
exploit-redirect.sh303ترويسة x-action-redirectنعمموصى به. لا متطلبات مسبقة.
exploit-throw.sh500نص استجابة الخطألاوضع التطوير فقط (تُجرد تفاصيل الأخطاء في الإنتاج).
exploit-blind.sh200جانب الخادم فقطنعمأطلِقْ وانْسَ (Fire-and-forget). يُستخدم لاستخراج البيانات خارج النطاق (OOB).
exploit-urlencoded.sh303ترويسة x-action-redirectنعمبصمة WAF مختلفة. يتطلب معرّف إجراء.
exploit-reflect.sh200نص الاستجابةنعمالأكثر تكتّمًا. يتطلب معرّف إجراء.

ملاحظة الإنتاج: يزيل React رسائل الأخطاء في إصدارات الإنتاج، مما يعطّل طريقة throw. فقط exploit-redirect.sh يلتقط مخرَج الأوامر بشكل موثوق في الإنتاج دون متطلبات مسبقة. يُخزَّن رابط إعادة التوجيه في خاصية digest الخاصة بالخطأ (بيانات وصفية)، وهي لا تُعقَّم - على عكس message التي تصبح {digest: "..."} فقط.

سكربتات مساعدة:

  • detect.sh - فحص ثغرة غير تخريبي (بدون تنفيذ كود)
  • enumerate-actions.sh - يكتشف معرّفات إجراءات الخادم (Server Action IDs) الصالحة من HTML الهدف
  • exfil-file.sh - استخراج ملفات مجزّأة (يتعامل تلقائيًا مع الملفات الكبيرة)
  • shell.sh - شل زائف تفاعلي عبر RCE
تنزيل الأداة