
إثبات مفهوم لاستغلال CVE-2025-55182، وهي ثغرة تنفيذ أوامر عن بُعد (RCE) حرجة في إجراءات خادم Next.js. يستغل إلغاء التسلسل غير الآمن في بروتوكول React Flight لتنفيذ أوامر تعسفية عبر تلويث النموذج الأولي وتجاوز الحماية الصندوقية.
نص برمجي لإثبات المفهوم (PoC) لـ React2Shell (CVE-2025-55182)، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) حرجة تؤثر على تطبيقات Next.js التي تستخدم إجراءات الخادم.
[!WARNING] إخلاء مسؤولية: هذه الأداة مخصصة لأغراض تعليمية واختبارات مصرح بها فقط. لست مسؤولاً عن أي إساءة استخدام.
يستغل هذا النص البرمجي ثغرة إلغاء تسلسل غير آمن في بروتوكول "Flight" لمكونات الخادم في React. يسمح للمهاجمين غير المصادق عليهم بتنفيذ تعليمات برمجية جافاسكريبت عشوائية على الخادم، مما يؤدي إلى تنفيذ تعليمات برمجية عن بُعد (RCE) جزئي.
require (global.require أو عبر منشئ الوحدة)، مما يضمن عمله على إصدارات Node.js الحديثة (v14+).pip install -r requirements.txt
python3 react2shell.py -u <TARGET_URL> [-c <COMMAND>]
التحقق من هوية المستخدم:
python3 react2shell.py -u http://127.0.0.1:3000/
سرد محتويات الدليل:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "ls -la"
قراءة ملف حساس:
python3 react2shell.py -u http://127.0.0.1:3000/ -c "cat /etc/passwd"
يستغل الثغرة سلسلة من تلوث النموذج الأولي (Prototype Pollution) وإلغاء تسلسل غير آمن (Insecure Deserialization) داخل معالجة إجراءات الخادم في Next.js لمكونات خادم React (RSC).
Next-Action إلى الخادم لمعالجة إجراء خادم.then ضارة ("$1:__proto__:then"). هذا يخدع معالج الطلبات غير المتزامن للخادم لاعتبار الحمولة ككائن "Thenable" (يشبه الكائن Promise)._response. حقل _prefix يُستخدم عادةً للتخزين المؤقت للتيار الداخلي، ولكن من خلال التلاعب به، يمكننا حقن كود جافاسكريبت خام.require من النطاق العام لمنع RCE. يتجاوز النص البرمجي ذلك عن طريق اجتياز سلسلة النموذج الأولي لـ process.mainModule:
var require = global.require || global.process.mainModule.constructor._load;
child_process وتنفيذ أوامر النظام.execSync)، ويتم إلقاء المخرجات ككائن خطأ. يتم تسلسل هذا الخطأ وإعادته إلى العميل في نص استجابة HTTP، مما يسمح لنا برؤية مخرجات الأمر.تم تطوير هذه الأداة بمساعدة Gemini 3 Pro.
| Argument | الوصف | الافتراضي |
|---|
-u, --url | مطلوب. عنوان URL الهدف (مثال: http://localhost:3000/). | N/A |
-c, --cmd | اختياري. الأمر المراد تنفيذه على الخادم. | id |