Saltar al contenido
OPS // KITitspentest.sh

E-ETC

etcdctl

Cliente oficial de línea de comandos para etcd, el almacén clave-valor detrás de Kubernetes, usado para enumerar y leer datos de un clúster expuesto o mal configurado.

Sitio oficialVolver al catálogo

RESUMEN

etcdctl (github.com/etcd-io/etcd) es la CLI oficial de etcd, el almacén clave-valor distribuido que sostiene el estado del clúster de Kubernetes — cada Secret, ConfigMap y objeto de la API que un clúster guarda termina viviendo en etcd, cifrado en reposo solo si el operador configuró explícitamente el cifrado. Cuando un puerto cliente de etcd (2379 por defecto) es alcanzable sin mTLS ni autenticación exigida, etcdctl es exactamente la herramienta para enumerar y volcar esos datos.

Más allá de Kubernetes, etcd también se usa de forma independiente como almacén de configuración distribuido de propósito general, así que el mismo enfoque de enumeración — conectar, listar claves, leer valores — aplica a cualquier despliegue de etcd expuesto, no solo a los gestionados por Kubernetes.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Probar si un puerto cliente de etcd expuesto exige autenticación o verificación de certificado de cliente.

  • 02

    Enumerar y volcar claves del almacén etcd de un clúster de Kubernetes mal configurado, incluyendo Secrets.

  • 03

    Revisar si los datos en reposo en etcd están cifrados o guardados en texto plano.

  • 04

    Confirmar el radio de impacto real de un endpoint etcd expuesto para el informe.

PRIMEROS PASOS

Cuando aparece un endpoint etcd (habitualmente el puerto 2379) en la enumeración sin autenticación ni certificado de cliente exigido, para revisar exactamente qué expone.

  1. Confirma que el endpoint etcd y cualquier acceso a datos están dentro del alcance autorizado.
  2. Identifica el puerto cliente de etcd (habitualmente 2379) durante la enumeración y revisa si exige TLS/autenticación.
  3. Configura las variables de entorno ETCDCTL_API y endpoint según la versión y dirección del clúster objetivo.
  4. Si no hay autenticación exigida, lista las claves para ver el alcance de los datos expuestos.
  5. Lee claves específicas solo lo necesario para demostrar el impacto, evitando exfiltrar en masa más allá de lo que prueba el hallazgo.
ETCDCTL_API=3 etcdctl --endpoints=https://10.10.10.5:2379 get "" --prefix --keys-only

ANTES DE USARLA

Qué revisar antes de lanzarla

Un endpoint etcd expuesto y sin autenticación normalmente otorga acceso completo de lectura/escritura a todo el estado del clúster, incluidos los Secrets — trata su descubrimiento como un hallazgo crítico y detente en la enumeración en lugar de extraer cada clave.

Las flags de etcdctl y la versión de API por defecto difieren entre versiones mayores de etcd (API v2 vs v3) — confirma la versión del objetivo antes de asumir que una sintaxis de comando funciona.

Escribir en etcd (put/del) puede corromper directamente el estado de un clúster de Kubernetes en vivo — restringe el testing a operaciones de solo lectura salvo que el impacto de escritura esté explícitamente en alcance y acordado.

SIGUE EXPLORANDO

Ver toda la fase →