
RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
أداة سطر أوامر للكشف عن 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 متعدد الأجزاء (multipart) مصممًا خصيصًا يحتوي على حمولة إثبات مفهوم لتنفيذ كود عن بُعد (RCE) تنفذ عملية حسابية حتمية (41*271 = 11111). تستجيب المضيفات المعرضة للثغرة بنتيجة العملية في ترويسة الاستجابة X-Action-Redirect على النحو /login?a=11111.
يختبر الماسح المسار الجذر (/) افتراضيًا. استخدم --path أو --path-file لاختبار مسارات مخصصة. إذا لم يكن الهدف معرضًا للثغرة، فإنه يتبع عمليات إعادة التوجيه على نفس المضيف (مثل / إلى /en/) ويختبر وجهة إعادة التوجيه. لا يتم اتباع عمليات إعادة التوجيه عبر الأصول.
يستخدم خيار --safe-check طريقة كشف بديلة تعتمد على مؤشرات القناة الجانبية (رمز حالة 500 مع بصمة خطأ محددة) دون تنفيذ أي كود على الهدف. استخدم هذا الوضع عندما لا يكون تنفيذ RCE مرغوبًا.
يضيف خيار --waf-bypass بيانات عشوائية غير مفيدة إلى بداية جسم طلب multipart. يمكن أن يساعد ذلك في تجاوز فحص محتوى WAF الذي يحلل الجزء الأول فقط من جسم الطلب. الحجم الافتراضي هو 128 كيلوبايت، ويمكن ضبطه عبر --waf-bypass-size. عند تفعيل تجاوز WAF، يتم زيادة المهلة تلقائيًا إلى 20 ثانية (ما لم يتم ضبطها صراحةً).
يستخدم خيار --vercel-waf-bypass بديلًا مختلفًا للحمولة مصممًا خصيصًا لتجاوز حمايات جدار حماية Vercel. يستخدم هذا بنية multipart مختلفة مع حقل نموذج إضافي.
يبدّل خيار --windows الحمولة من قشرة Unix (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
افحص مسارات مخصصة:
python3 scanner.py -u https://example.com --path /_next
python3 scanner.py -u https://example.com --path /_next --path /api
python3 scanner.py -u https://example.com --path-file paths.txt
-u, --url Single URL to check
-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)
--path Custom path to test (can be used multiple times)
--path-file File containing paths to test (one per line)
تم الكشف عن إثبات مفهوم RCE في الأصل بواسطة @maple3142 -- نحن ممتنون للغاية لعملهم في نشر إثبات مفهوم يعمل.
أُنشئت هذه الأداة في الأصل كطريقة آمنة لكشف RCE. لا تزال هذه الوظيفة متاحة عبر --safe-check، وضع "الكشف الآمن".
تتم طباعة النتائج على الطرفية. عند استخدام -o، يتم حفظ المضيفات المعرضة للثغرة في ملف JSON يحتوي على طلب HTTP واستجابته بالكامل للتحقق.