
Практическая лаборатория capture-the-flag для OWASP Kubernetes Top 10 (2025). Используйте 11 реальных уязвимостей кластера, захватывайте флаги, затем применяйте исправления и проверяйте с помощью автоматической проверки. Запускается локально на kind.
Capture-the-flag, построенное на базе OWASP Kubernetes Top Ten — 2025. Вас наняли для проведения атак (red-team) на NimbusMart — вымышленную компанию электронной коммерции, чей кластер рос быстрее, чем его безопасность. Десять заданий, по одному на каждый риск OWASP (плюс бонус) — эксплуатируйте каждую уязвимость, захватывайте флаг, затем применяйте исправление и подтверждайте его с помощью проверяющего.
Вся вселенная (компания, сервисы, пространства имён, схема флагов) описана в файле labs/NIMBUSMART.md.
Всё работает локально на kind. Никогда не применяйте уязвимые манифесты к реальному кластеру.
Создано @hac01.
Это не набор слайдов — это работающий, уязвимый по замыслу кластер Kubernetes, а также инструменты для атаки, исправления и проверки исправлений. В одиннадцати заданиях вы познакомитесь на практике с:
hostPath и выход из узла (K01).ClusterRole, сервисные аккаунты с избыточными правами и как один украденный токен даёт доступ ко всем секретам (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. Одна команда запускает всё и выводит URL:
./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/ Настоящие манифесты K8s по каждому риску (vulnerable.yaml + fixed.yaml + README)
│ ├── NIMBUSMART.md Вселенная: компания, пространства имён, схема флагов
│ └── kind-cluster.yaml Общая конфигурация локального кластера (привязка портов)
├── deploy/ Манифесты платформы внутри кластера (web + terminal + 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 — выберите цель, эксплуатируйте её, захватите флаг, затем исправьте и подтвердите исправление с помощью проверяющего.
