
مجموعة أدوات Go خفيفة الوزن بالإضافة إلى مختبر Next.js Dockerized لاستكشاف وتصنيف CVE-2025-55182.
طقم أدوات Go خفيف الوزن بالإضافة إلى مختبر Next.js محوسب (Dockerized) لاستكشاف وفرز CVE-2025-55182. لأغراض تعليمية واختبار مصرح به فقط.
React2Shell_Deconstructing_a_Perfect_10_RCE.pdf ومخطط مسار الهجوم
checker: مسح جرد سريع ومتزامن (هدف واحد، ملف، أو stdin)، استدلالي لتعرض RSC، إخراج JSON لكل هدف، ملخص نهائي، اختياري -only-vuln، -no-progress، -ua مخصص.poc: إرسال طلب RSC متعدد الأجزاء على نمط الاستغلال وطباعة الملخص المُعاد؛ يدعم أمرًا مخصصًا عبر -c (الافتراضي id).-c)، ومهلات زمنية، وإحصائيات التقدم.-target، -list، أو -stdin؛ يضيف تلقائيًا https:// عند غياب المخطط.vulnlab/) مع Next.js 15.5.6/React 19، وملف Dockerfile و docker-compose.yml موجه إلى localhost:3000 لإعادة إنتاج آمنة.cd checker
GOCACHE=/tmp/go-cache go build -o CVE-2025-55182 ./cmd/CVE-2025-55182
اضبط GOCACHE إذا كانت بيئتك تواجه مشاكل في صلاحيات ذاكرة التخزين المؤقت.
# Scanner
./CVE-2025-55182 checker -target https://example.com
./CVE-2025-55182 checker -list ../targets.txt -c 50 -only-vuln
cat ../targets.txt | ./CVE-2025-55182 checker -stdin -no-progress
# PoC (exploit-style request)
./CVE-2025-55182 poc -target http://localhost:3000
./CVE-2025-55182 poc -target http://localhost:3000 -c "whoami"
CVE-2025-55182 هو خطأ إلغاء تسلسل غير آمن في كيفية تحميل مكونات خادم React للوحدات من حمولات Flight. في react-server-dom-webpack، تسحب الدالة المساعدة requireModule(metadata) وحدة ثم تعيد moduleExports[metadata[2]]. الوصول بالأقواس يتنقل عبر سلسلة النموذج الأولي، لذا فإن مرجعًا يتحكم فيه المهاجم مثل $1:constructor:constructor يتسلق من دالة مصدرة إلى constructor الخاص بها (منشئ Function العام) ويمكنه تنفيذ أكواد JS عشوائية. يسمح بروتوكول Flight للمهاجمين بتوفير مسارات الخصائص المفصولة بنقطتين، مما يحول محمل الوحدة إلى أداة لتنفيذ الأكواد عن بعد.
cd vulnlab
docker compose build
docker compose up
# App listens on 127.0.0.1:3000 inside the container; runs as non-root user.
Dockerfile يبني تطبيق Next.js (Node 20 Alpine)، ويثبت التبعيات، ويبني، ويعمل كمستخدم nextjs غير جذر.docker-compose.yml يربط 127.0.0.1:3000:3000 للاختبار المحلي فقط افتراضيًا.Snort / Suricata (HTTP إلى الخادم)
alert http any any -> $LAN_NETWORK any (
msg:"Potential Next.js React2Shell / CVE-2025-66478 attempt";
flow:to_server,established;
content:"Next-Action"; http_header; nocase;
content:"multipart/form-data"; http_header; nocase;
pcre:"/Content-Disposition:\s*form-data;\s*name=\"0\"/s";
pcre:"/\"status\"\s*:\s*\"resolved_model\"/s";
pcre:"/\"then\"\s*:\s*\"\$1:__proto__:then\"/s";
classtype:web-application-attack;
sid:6655001;
rev:1;
)
استعلام (حزم React RSC الضعيفة)
{
"queries": {
"detect_rev2shell_react_server_components": {
"query": "SELECT name, version, path FROM npm_packages WHERE (name='react-server-dom-parcel' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-turbopack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0')) OR (name='react-server-dom-webpack' AND (version='19.0.0' OR (version >= '19.1.0' AND version < '19.1.2') OR version='19.2.0'));",
"interval": 3600,
"description": "Detects vulnerable versions of React Server Components packages (react-server-dom-*) affected by CVE-2025-55182 / CVE-2025-66478 / React2Shell.",
"platform": "linux,windows,macos",
"version": "1.0"
}
}
}