Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2025-55182-React2Shell-Async-Scanner — ماسح Async RCE لـ CVE-2025-55182 / CVE-2025-66478 — prototype-pollution → تنفيذ أكواد عبر React Server Actions. | Kitploit
أدوات/GitHubGitHub/inferiorak/cve-2025-55182-react2shell-async-scanner
الاستطلاعماسحات الثغرات الأمنيةالتحليل الديناميكي (عزل)تحليل الكودالاستغلالاستغلال تطبيقات الويبجمع المعلوماتCTFاختبار الاختراق

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
التعلم والتعليم
تطوير الحمولات
GitHubinferiorak/cve-2025-55182-react2shell-async-scanner

CVE-2025-55182-React2Shell-Async-Scanner

ماسح Async RCE لـ CVE-2025-55182 / CVE-2025-66478 — prototype-pollution → تنفيذ أكواد عبر React Server Actions.

عرض المستودع
31منذ 5 أشهرلم تتم المراجعة بعد

⚡ React2Shell

CVE-2025-55182 / CVE-2025-66478 - ماسح RCE غير متزامن

Python CVE CVE License Author Visitors

تلوث النموذج الأولي → تنفيذ أوامر عن بُعد عبر إجراءات خادم React

كشف غير متزامن، قائم على الإصدار الأول، مبني على مخرجات الكناري - بدون تخمين أعمى


[!WARNING] فقط لأبحاث الأمن المصرح بها واختبارات الاختراق. فحص الأنظمة دون إذن كتابي صريح غير قانوني. المؤلف لا يتحمل أي مسؤولية عن سوء استخدام هذه الأداة.


جدول المحتويات

  • نظرة عامة على الثغرة
  • الإصدارات المتأثرة
  • كيفية عمل الكشف
  • التثبيت
  • الاستخدام
  • مرجع الخيارات
  • المخرجات والأحكام
  • وضع المتصفح
  • خط أنابيب كشف الإصدار

نظرة عامة على الثغرة

إجراءات خادم React تمرر بيانات الإجراء كـ بيانات نموذج متعددة الأجزاء (multipart form data) مباشرة إلى سياق تنفيذ من جانب الخادم. بسبب عدم كفاية تنقية تلوث النموذج الأولي في الإصدارات المتأثرة من react-server-dom-webpack، يمكن للمهاجم:

  1. حقن حمولة متعددة الأجزاء مصممة لتلويث Object.prototype
  2. تجاوز _response._prefix على كائن الاستجابة الداخلي
  3. إجبار الخادم على تنفيذ أوامر شل عشوائية عبر:
    root@kitploit:~
    process.mainModule.require('child_process').execSync(cmd)
    

وهذا يعطي تنفيذ أوامر عن بُعد بدون مصادقة على أي تطبيق Next.js يمكن الوصول إليه علنًا يستخدم إجراءات خادم React مع إصدار متأثر من React.

CVE-2025-55182 - واسع: يؤثر على حزم React 19 (react-server-dom-webpack, react-server-dom-parcel, react-server-dom-turbopack) CVE-2025-66478 - ضيق: مسار استغلال خاص بـ Next.js عبر نقطة نهاية إجراء الخادم /


الإصدارات المتأثرة


كيفية عمل الكشف

يستخدم هذا الماسح التحقق من الكناري القائم على المخرجات - الطريقة الأكثر موثوقية لتأكيد تنفيذ الأكواد الحقيقي مع عدم وجود نتائج إيجابية خاطئة:

root@kitploit:~
1.  إرسال POST /  مع رأس Next-Action وحمولة تلوث النموذج الأولي متعددة الأجزاء
2.  الحمولة تنفذ:  echo <canary_عشوائي>
3.  الخادم الضعيف يرمي NEXT_REDIRECT مع base64(canary) في الرابط
4.  رأس الاستجابة:   X-Action-Redirect: /login?a=<base64(canary)>
5.  يفك الماسح base64 → يطابق الكناري → تأكيد RCE ✓

allow_redirects=False أمر بالغ الأهمية - التأكيد موجود في الرأس، وليس وجهة إعادة التوجيه.


التثبيت

root@kitploit:~
git clone https://github.com/InferiorAK/React2Shell
cd React2Shell

pip install -r requirements.txt

# مطلوب فقط في حالة استخدام وضع --browser لتحسين كشف الإصدار:
playwright install chromium
playwright install-deps chromium

المتطلبات: Python 3.10+


الاستخدام

ماسح CVE-2025-55182 - واسع (React + Next.js)

root@kitploit:~
# هدف واحد
python3 CVE-2025-55182_scanner.py -u https://target.com

# مسح قائمة عناوين URL
python3 CVE-2025-55182_scanner.py -f urls.txt

# وضع هادئ - طباعة نتائج RCE / Vulnerable فقط
python3 CVE-2025-55182_scanner.py -f urls.txt -q

# وضع المتصفح - Chromium بدون واجهة للكشف الدقيق عن الإصدار
python3 CVE-2025-55182_scanner.py -f urls.txt -b

# الخيارات الكاملة - موصى بها للمسح على نطاق واسع
python3 CVE-2025-55182_scanner.py -f urls.txt -b -q -c 3 -t 20

مرجع الخيارات

ماسح CVE-2025-55182


المخرجات والأحكام

يتم تعيين أحد الأحكام التالية لكل هدف تم مسحه:

ملفات الإخراج (تُحفظ في مجلد outputs/، يتم إنشاؤها تلقائيًا):

  • outputs/vuln.txt — نتائج RCE و VULNERABLE (تُلحق في كل تشغيل)
  • outputs/unknown.txt — أهداف ذات إصدار Unknown؛ أعد المحاولة مع -b للكشف الدقيق عن الإصدار

وضع المتصفح

لماذا يظهر الإصدار كـ unknown لأكثر من 90٪ من المواقع؟

Next.js 13+ الحديثة التي تستخدم بنية توجيه التطبيق (App Router) لا تضمن أبدًا إصدار الإطار في HTML الثابت. الإصدار موجود فقط في window.next.version بعد تنفيذ JavaScript في سياق متصفح حقيقي.

بدون --browser:

  • يعتمد كشف الإصدار على رؤوس HTTP، و__NEXT_DATA__، والنصوص البرمجية المضمنة، وملفات القطع المجزأة المجمعة
  • مواقع توجيه التطبيق تعيد دائمًا unknown تقريبًا - يتم تجاوز التصفية القائمة على الإصدار

مع --browser (-b):

  • يطلق Playwright متصفح Chromium بدون واجهة
  • يتم تنفيذ JavaScript للصفحة بالكامل
  • يقرأ الماسح window.next.version مباشرة من DOM المباشر
  • دقة الإصدار ترتفع من ~10٪ → قريبة من 100٪ على مواقع Next.js الحديثة
root@kitploit:~
# موصى به مع وضع المتصفح - تقليل التزامن (صفحات المتصفح تستهلك موارد كثيرة)
python3 CVE-2025-55182_scanner.py -f urls.txt -b -c 3

خط أنابيب كشف الإصدار

يقوم الماسح بتشغيل ما يصل إلى 7 مراحل، ويتوقف بمجرد العثور على إصدار:

root@kitploit:~
المرحلة 1 │ رؤوس استجابة HTTP
        │  X-Powered-By: Next.js X.Y.Z
        │  x-nextjs-*, x-next-version

المرحلة 2 │ كتل <script> المضمنة (مسح كتلة بكتلة)
        │  window.next = { version: "X.Y.Z", ... }
        │  version:"X.Y.Z", router: ...      ← نمط المفتاح المجاور للحزمة المصغرة
        │  "nextVersion":"X.Y.Z"
        │  Next.js vX.Y.Z                    ← نص عادي في تعليقات HTML/البيانات الوصفية
        │  __NEXT_VERSION__ = "X.Y.Z"

المرحلة 3 │ كتلة JSON __NEXT_DATA__
        │  فقط موجه الصفحات - "version":"X.Y.Z" آمن في هذا السياق

المرحلة 4 │ عناوين URL للقطع المجزأة المجمعة (مستخرجة من <script src>)
        │  /_next/static/chunks/*, /_next/static/app/*, /_next/static/runtime/*
        │  يجلب ما يصل إلى 12 ملف حزمة حقيقية، يفحص سلاسل الإصدار

المرحلة 5 │ القطع المجزأة الاحتياطية بأسماء ثابتة
        │  main.js, framework.js, webpack.js, _app.js, pages/_app.js

المرحلة 6 │ نقطة نهاية /package.json
        │  وضع التطوير / الخوادم غير المهيأة بشكل صحيح تكشف هذا مباشرة

المرحلة 7 │ متصفح Playwright بدون واجهة  [--browser / -b فقط]
        │  يقيّم window.next.version بعد تنفيذ JS بالكامل
        │  يتم تشغيله فقط عندما تعيد المراحل 1-6 "unknown"

إخلاء المسؤولية

تم نشر هذه الأداة لأغراض البحث الأمني التعليمي والمصرح به فقط. المؤلف، InferiorAK، غير مسؤول عن أي ضرر ناتج عن سوء الاستخدام. احصل دائمًا على إذن كتابي قبل اختبار أي نظام لا تملكه.


من إعداد InferiorAK


روابطي

Github Facebook Messenger Twitter YouTube

تنزيل الأداة
المكونعرضة للخطرتم التصحيح
React react-server-dom-*19.0.0, 19.1.0, 19.1.1, 19.2.019.0.1, 19.1.2, 19.2.1+
Next.js 16.x16.0.0 – 16.0.616.0.7+
Next.js 15.x15.0.0-15.0.4, 15.1.0-15.1.8, 15.2.0-15.2.5, 15.3.0-15.3.5, 15.4.0-15.4.7, 15.5.0-15.5.615.0.5+, 15.1.9+, 15.2.6+, 15.3.6+, 15.4.8+, 15.5.7+
Next.js 14.xإصدارات canary 14.3.0-canary.77+ فقطجميع إصدارات 14.x المستقرة - غير متأثرة
Next.js 13.x-غير متأثرة
العلمالصيغة الطويلةالافتراضيالوصف
-u--url-عنوان URL هدف واحد
-f--file-ملف يحتوي على عنوان URL واحد لكل سطر
-o--outputoutputs/vuln.txtملف إخراج للأهداف الضعيفة
-U--unknown-outputoutputs/unknown.txtملف إخراج للأهداف ذات الإصدار غير المعروف
-c--concurrency5اتصالات HTTP متزامنة
-t--timeout15مهلة لكل طلب (بالثواني)
-q--quietإيقافطباعة صفوف RCE / VULNERABLE فقط
-b--browserإيقافاحتياطي كشف الإصدار باستخدام Playwright Chromium بدون واجهة
الحكماللونالمعنى
RCE🔴 أحمرتأكيد الكناري في X-Action-Redirect - تنفيذ أوامر عن بُعد مثبت
VULNERABLE🟠 برتقاليالإصدار ضمن النطاق الضعيف؛ حمولة RCE لم ترجع (جدار حماية / تكوين مصحح / نقطة نهاية خاطئة)
Unknown🟡 أصفرتم تأكيد Next.js ولكن لم يمكن اكتشاف الإصدار - تمت محاولة RCE على أي حال؛ تم الحفظ في outputs/unknown.txt لإعادة المحاولة بوضع المتصفح
Not Vulnerable🟢 أخضرتم تأكيد الإصدار على أنه مصحح، أو أن RCE أعادت صراحةً القيمة آمن
Skipped⚪ أبيضإصدار مؤكد أنه مصحح أو موقع ليس Next.js - لم تتم محاولة PoC
Error⚪ أبيضالمضيف غير قابل للوصول أو فشل الاتصال