Saltar al contenido
OPS // KITitspentest.sh

E-KUB

kubeletctl

CLI que habla directamente con la API Kubelet de un nodo para listar pods, hacer exec en contenedores y leer logs — más valioso contra un kubelet dejado con acceso anónimo.

Sitio oficialVolver al catálogo

RESUMEN

kubeletctl (cyberark/kubeletctl) es un CLI construido específicamente alrededor de la API Kubelet — la interfaz HTTP propia del agente de cada nodo, independiente y normalmente menos protegida que el API server principal de Kubernetes. Envuelve tanto los endpoints documentados (listar pods en ejecución, obtener logs y métricas de contenedores) como los no documentados, en particular los endpoints de debug run/exec que permiten a quien los llama ejecutar un comando dentro de cualquier contenedor que gestione el kubelet.

Su subcomando scan barre un rango CIDR en busca de kubelets que respondan sin autenticación — un valor por defecto heredado en algunas distribuciones y un hallazgo recurrente en clústeres autogestionados o sin gestión centralizada — y marca cuáles de esos kubelets expuestos también permiten ejecución de comandos anónima, convirtiendo un único nodo expuesto en ejecución de código directa dentro de cada pod que aloja.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Barrer un rango de nodos/subred en busca de kubelets expuestos sin autenticación (`scan rce`, `scan token`).

  • 02

    Listar los pods y contenedores en ejecución en un nodo objetivo una vez encontrado un kubelet expuesto.

  • 03

    Ejecutar comandos dentro de un contenedor directamente a través de la API kubelet, sin pasar por el API server principal ni necesitar ningún permiso RBAC.

  • 04

    Recolectar tokens de service account montados en contenedores alcanzables vía un kubelet anónimo, como vía para escalar hacia la API normal del clúster protegida por RBAC.

PRIMEROS PASOS

Al enumerar un rango de nodos/subred en busca de kubelets que respondan sin autenticación, y al seguir adelante con los que la tengan expuesta.

  1. Confirma que el rango de nodos/CIDR probado en busca de exposición del kubelet está dentro del alcance acordado — esto evita por completo el API server de Kubernetes y su RBAC.
  2. Ejecuta un escaneo sobre el rango objetivo para encontrar kubelets que respondan sin autenticación.
  3. Sobre un resultado positivo, lista los pods y contenedores en ejecución para ver qué es alcanzable.
  4. Donde esté en alcance, intenta ejecutar comandos en un contenedor y anota si también expone un token de service account utilizable.
kubeletctl scan rce --cidr 10.0.0.0/24

ANTES DE USARLA

Qué revisar antes de lanzarla

El hallazgo aquí suele ser la exposición en sí — una API Kubelet anónima y sin autenticación (puerto 10250 por defecto) es una desconfiguración del clúster, no una vulnerabilidad de kubelet ni de kubeletctl; repórtalo como tal.

Ejecutar comandos o leer logs a través de un kubelet expuesto afecta directamente a los workloads de ese nodo — trátalo como cualquier otra ejecución remota de comandos y mantente dentro de las reglas de enfrentamiento acordadas.

Un kubelet que rechaza peticiones anónimas no está necesariamente reforzado en todo lo demás — un certificado de nodo o cliente válido pero con alcance excesivo puede dar el mismo acceso, así que no detengas la prueba en 'el acceso anónimo está deshabilitado.'

SIGUE EXPLORANDO

Ver toda la fase →