
آلية كشف عالية الدقة لثغرات RSC/Next.js RCE (CVE-2025-55182 & CVE-2025-66478)
أداة سطر أوامر للكشف عن CVE-2025-55182 و CVE-2025-66478 في تطبيقات Next.js التي تستخدم مكونات React Server.
للحصول على تفاصيل تقنية حول الثغرة ومنهجية الكشف، راجع منشور مدونتنا: https://slcyber.io/research-center/high-fidelity-detection-mechanism-for-rsc-next-js-rce-cve-2025-55182-cve-2025-66478
افتراضيًا، يرسل الماسح طلب POST متعدد الأجزاء (multipart) مصنوع يحتوي على حمولة إثبات المفهوم (PoC) لـ 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 متغير حمولة بديل مصمم خصيصًا لتجاوز حماية WAF لـ Vercel. يستخدم هذا بنية multipart مختلفة مع حقل إضافي في النموذج.
تبديل علامة --windows الحمولة من شل يونكس (echo $((41*271))) إلى PowerShell (powershell -c "41*271") للأهداف التي تعمل على Windows.
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
فحص أهداف Windows:
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 عنوان URL واحد للفحص
-l, --list ملف يحتوي على مضيفين (مضيف واحد لكل سطر)
-t, --threads عدد الخيوط المتزامنة (الافتراضي: 10)
--timeout مهلة الطلب بالثواني (الافتراضي: 10)
-o, --output ملف الإخراج للنتائج (JSON)
--all-results حفظ جميع النتائج، وليس فقط المضيفين المعرضين
-k, --insecure تعطيل التحقق من شهادة SSL
-H, --header رأس مخصص (يمكن استخدامه عدة مرات)
-v, --verbose عرض تفاصيل الاستجابة للمضيفين المعرضين
-q, --quiet إخراج المضيفين المعرضين فقط
--no-color تعطيل الإخراج الملون
--safe-check استخدام الكشف الجانبي الآمن بدلاً من PoC لـ RCE
--windows استخدام حمولة PowerShell لنظام Windows بدلاً من شل يونكس
--waf-bypass إضافة بيانات عشوائية لتجاوز فحص محتوى WAF
--waf-bypass-size حجم البيانات العشوائية بالكيلوبايت (الافتراضي: 128)
--path مسار مخصص للفحص (يمكن استخدامه عدة مرات)
--path-file ملف يحتوي على مسارات للفحص (مسار واحد لكل سطر)
تم الكشف عن PoC لـ RCE في الأصل من قبل @maple3142 -- نحن ممتنون جدًا لعملهم في نشر PoC عامل.
تم بناء هذه الأداة في الأصل كطريقة آمنة للكشف عن RCE. هذه الوظيفة لا تزال متاحة عبر --safe-check، وضع "الكشف الآمن".
تُطبع النتائج على المحطة. عند استخدام -o، يتم حفظ المضيفين المعرضين في ملف JSON يحتوي على طلب HTTP الكامل والاستجابة للتحقق.