تطبيق Next.js ضعيف عن قصد يوضح ثغرة CVE-2025-55182 لتنفيذ الأوامر عن بعد (RCE) عبر إلغاء التسلسل غير الآمن في مكونات خادم React. يتضمن سكريبتات استغلال وتكامل مع الماسح الضوئي للبحث الأمني والتعليم.
⚠️ تحذير: هذا التطبيق قصدًا به أن يكون قابلاً للثغرة لأغراض تعليمية وبحثية أمنية فقط. لا تنشره في بيئة إنتاج أو تعرضه للإنترنت.
هذا تطبيق Next.js قابل للثغرة يُظهر CVE-2025-55182، وهي ثغرة حرجة لتنفيذ التعليمات البرمجية عن بُعد في مكونات خادم React. صُمم التطبيق ليشبه لوحة تحكم مهنية لاستضافة سحابية مع كونه قابلاً للثغرة عن قصد لاختبار الأمان والأغراض التعليمية.
تفاصيل CVE:
curl_id.sh لاختبار الثغرةnpm install --legacy-peer-deps
npm run dev
سيكون التطبيق متاحًا على http://localhost:3000
يحتوي المستودع على curl_id.sh، أداة سطر أوامر مبنية على قالب Nuclei لاستغلال CVE-2025-55182.
الاستخدام:
# تنفيذ أمر id (الافتراضي)
./curl_id.sh -d localhost:3000 -c id
# تنفيذ أوامر مخصصة
./curl_id.sh -d localhost:3000 -c "whoami"
./curl_id.sh -d localhost:3000 -c "uname -a"
./curl_id.sh -d localhost:3000 -c "ls -la /tmp"
# اختبار نطاقات بعيدة (إذا كانت قابلة للثغرة)
./curl_id.sh -d vulnapp.com -c id
الخيارات:
-d, --domain: النطاق/الرابط المستهدف (الافتراضي: http://localhost:3000)-c, --command: الأمر المراد تنفيذه (الافتراضي: id)git clone https://github.com/assetnote/react2shell-scanner.git
cd react2shell-scanner
pip install -r requirements.txt
python3 scanner.py -u http://localhost:3000
python3 scanner.py -u http://localhost:3000 --safe-check
يمكن استغلال الثغرة بإرسال طلب POST متعدد الأجزاء (multipart) مُعدل إلى الخادم مع:
Next-Action: xX-Nextjs-Request-IdX-Nextjs-Html-Request-Idانظر إلى مستودع react2shell-scanner للحصول على هيكل الحمولة الدقيق.
توجد الثغرة في آلية إلغاء التسلسل في مكونات خادم React. عندما يعالج Next.js إجراءات الخادم، فإنه يلغي تسلسل حمولة الطلب. الإصدارات القابلة للثغرة من React (19.0.0-19.2.0) لا تتحقق بشكل صحيح من البيانات المُلغى تسلسلها أو تعقمها، مما يسمح للمهاجمين بما يلي:
process.mainModule.require('child_process').execSync()X-Action-Redirectيستخدم الاستغلال هجوم تلويث النموذج الأولي في عملية إلغاء تسلسل JSON. يشمل هيكل الحمولة ما يلي:
then تلوث سلسلة النموذج الأولي_response مع حقل _prefix يحتوي على كود JavaScriptexecSync() ويُوجَّه الإخراج إلى ترويسة الاستجابةلإصلاح هذه الثغرة:
npm install react@latest react-dom@latest
npm install next@latest
npm audit fix
vuln-app-CVE-2025-55182/
├── app/
│ ├── actions.ts # إجراء خادم قابل للثغرة
│ ├── layout.tsx # التخطيط الجذري
│ └── page.tsx # صفحة لوحة التحكم الرئيسية
├── node_modules/ # التبعيات
├── curl_id.sh # سكريبت استغلال للاختبار
├── package.json # تبعيات المشروع (إصدارات قابلة للثغرة)
├── tsconfig.json # إعداد TypeScript
├── next.config.js # إعداد Next.js
├── .gitignore # قواعد تجاهل Git
└── README.md # هذا الملف
تم إنشاء هذا التطبيق فقط لأغراض البحث الأمني والتعليم.
المؤلفون والمساهمون غير مسؤولين عن أي إساءة استخدام لهذا الكود. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني وقد يؤدي إلى ملاحقة جنائية.
هذا مستودع تعليمي. نرحب بالمساهمات التي تحسن التوثيق أو تضيف أمثلة أفضل أو تعزز القيمة التعليمية.
هذا المشروع مقدم للأغراض التعليمية. الاستخدام على مسؤوليتك الخاصة.
تذكر: هذا تطبيق قابل للثغرة. استخدمه بمسؤولية وفقط في بيئات مُتحكم بها لأغراض البحث الأمني والتعليم.