
معمل عملي من نوع "التقط العلم" لتصنيف OWASP Kubernetes Top 10 (2025). استغل 11 ثغرة حقيقية في المجموعات، التقط الأعلام، ثم طبق الإصلاحات وتحقق منها باستخدام مدقق آلي. يعمل محليًا على kind.
لعبة التقط العلم مبنية على OWASP Kubernetes Top 10 — 2025. لقد تم تعيينك كفريق اختراق أخلاقي لـ NimbusMart، وهي شركة تجارة إلكترونية خيالية نما كتلة (cluster) الخاصة بها أسرع من أمانها. عشرة تحديات، واحد لكل خطر من OWASP (بالإضافة إلى تحدٍ إضافي) — استغل كل نقطة ضعف، التقط العلم، ثم طبق الإصلاح وأثبت صحته باستخدام المدقق.
الكتاب المقدس (الشركة، الخدمات، مساحات الأسماء، مخطط الأعلام) موجود في labs/NIMBUSMART.md.
كل شيء يعمل محليًا على kind. لا تقم أبدًا بتشغيل الملفات الضعيفة ضد كتلة حقيقية.
بُني بواسطة @hac01.
هذه ليست مجموعة شرائح — إنها كتلة Kubernetes عاملة وضعيفة التصميم بالإضافة إلى الأدوات اللازمة لمهاجمتها وإصلاحها والتحقق من الإصلاح. عبر التحديات الإحدى عشر، ستتعامل عمليًا مع:
hostPath، والاختراق العقدي (K01).ClusterRole ذات العلامات البدل (wildcard)، وحسابات الخدمة ذات النطاق الواسع (over-scoped ServiceAccounts)، وكيف يمكن لرمز مسروق واحد الوصول إلى جميع الأسرار (K02, K09).NetworkPolicy (K05).:latest غير موثوقة وقابلة للتغيير يتم شحنها إلى الإنتاج (تحدٍ إضافي).لكل تحدٍ تحصل على:
قم بتثبيت هذه قبل البدء. يقوم سكريبت الإعداد بالتحقق من الأربعة الأولى ويخرج بسرعة برسالة واضحة إذا كان أي منها مفقودًا.
| الأداة | لماذا | التثبيت |
|---|---|---|
| Docker | يدير كتلة kind ويبني الصور. يجب أن يكون قيد التشغيل. | Docker Desktop / Engine |
| kind | كتلة Kubernetes محلية داخل Docker. | brew install kind |
| kubectl | التحدث إلى الكتلة. | brew install kubectl |
| Go 1.21+ | بناء وتشغيل المدقق الثنائي. | brew install go |
| Node.js 18+ | فقط لتشغيل تطبيق الويب محليًا (make web). غير مطلوب للإعداد أحادي الأمر داخل الكتلة. | brew install node |
أوامر
brewمخصصة لنظام macOS. على Linux، استخدم مدير الحزم الخاص بك أو التعليمات من المصدر المرتبط.
تطبيق الويب، وطرفية المتصفح، والمدقق يمكنهم جميعًا العمل داخل كتلة kind. أمر واحد يشغل كل شيء ويطبع الرابط:
./setup.sh # أو: make up
# - ينشئ كتلة kind، ويبني ويحمل الصور، وينشر، وينتظر حتى يصبح جاهزًا
# - تطبيق الويب: http://localhost:30090
# - الطرفية: زر 'Terminal' في تطبيق الويب
./setup.sh (ينشئ) الكتلة من جديد مع تعيينات المنافذ الصحيحة، ويبني الصورتين (nimbusmart-ctf-web, nimbusmart-ctf-terminal)، ويحملها إلى kind، ويطبق deploy/. التشغيل الأول يسحب الصور الأساسية ويستغرق حوالي 1-2 دقيقة.
./setup.sh # كتلة جديدة + منصة كاملة (يحذف أي كتلة قديمة باسم 'owasp-labs')
./setup.sh --keep # يعيد استخدام كتلة 'owasp-labs' الموجودة إذا كانت موجودة
ثم افتح **http://localhost:30090**، اختر تحدٍ، واستخدم زر Terminal في المتصفح لقيادة الكتلة.
تعمل حاوية الطرفية كحساب خدمة cluster-admin، لذا فإن الطرفية في المتصفح تقود هذه الكتلة نفسها — قم بتشغيل kubectl apply -f labs/... و owasp-k8s-checker --check kNN هناك.
تحذير: الطرفية داخل المتصفح تعادل
cluster-adminعبر WebSocket. إنها آمنة فقط لأنها مقيدة بكتلة kind المحلية المؤقتة علىlocalhost. لا تقم أبدًا بتعريض المنافذ30080/30090/30091لشبكة غير موثوقة.
kind delete cluster --name owasp-labs # أو: make cluster-down
.
├── setup.sh سكريبت بدء التشغيل أحادي الأمر (كتلة + صور + نشر)
├── Makefile أهداف مساعدة — قم بتشغيل `make help` لعرضها
├── web/ تطبيق Next.js + React (سمة بيضاء/بنفسجية) — واجهة المستخدم
├── labs/ ملفات Kubernetes الفعلية لكل خطر (vulnerable.yaml + fixed.yaml + README)
│ ├── NIMBUSMART.md الكتاب المقدس: الشركة، مساحات الأسماء، مخطط الأعلام
│ └── kind-cluster.yaml إعداد الكتلة المحلية المشتركة (تعيينات المنافذ)
├── deploy/ ملفات المنصة داخل الكتلة (ويب + طرفية + RBAC) + build.sh
├── terminal-server/ النهاية الخلفية WebSocket للطرفية داخل المتصفح
└── checker/ برنامج Go للتحقق من صحة الكتلة مقابل قائمة Top 10
أهداف make المفيدة (make help يعرض الكل):
| الهدف | ما يفعله |
|---|---|
make up | دفعة واحدة: كتلة + صور + نشر (يشغل setup.sh) |
make web | تشغيل تطبيق الويب في وضع التطوير على :3000 |
make cluster / make cluster-down | إنشاء / حذف كتلة kind المحلية |
make scan | تشغيل جميع المدققات على الكتلة الحالية |
make check ID=k01 | تشغيل مدقق واحد |
make clean-labs | حذف جميع موارد المختبرات (إعادة تعيين بين التحديات) |
كل تحدٍ هو نقطة ضعف حقيقية في كتلة NimbusMart — اختر هدفًا، استغله، التقط العلم، ثم صححه وأثبت الإصلاح باستخدام المدقق.
| المعرف | الخطر | مجلد المختبر |
|---|---|---|
| K01 | تكوينات عبء العمل غير الآمنة | labs/k01-insecure-workload |
| K02 | تكوينات التفويض شديدة التساهل | labs/k02-authorization |
| K03 | فشل إدارة الأسرار | labs/k03-secrets |
| K04 | عدم وجود تطبيق سياسات على مستوى الكتلة | labs/k04-policy-enforcement |
| K05 | نقص ضوابط تقسيم الشبكة | labs/k05-network-segmentation |
| K06 | مكونات Kubernetes المكشوفة بشكل زائد | labs/k06-exposed-components |
| K07 | مكونات الكتلة غير المهيأة والضعيفة | labs/k07-cluster-components |
| K08 | الحركة الجانبية من الكتلة إلى السحابة | labs/k08-cluster-to-cloud |
| K09 | آليات المصادقة المعطلة | labs/k09-authentication |
| K10 | التسجيل والمراقبة غير الكافي | labs/k10-logging-monitoring |
| إضافي | ثغرات سلسلة التوريد | labs/kbonus-supply-chain |