Saltar al contenido
OPS // KITitspentest.sh

E-CAN

can-they.sh

Script bash de badPods (Bishop Fox) que ejecuta en lote kubectl auth can-i para mapear qué puede hacer realmente el service account de un pod.

Sitio oficialVolver al catálogo

RESUMEN

can-they.sh, un script bash dentro del repositorio badPods de Bishop Fox (github.com/BishopFox/badPods/blob/main/scripts/can-they.sh, con licencia MIT) en lugar de un proyecto independiente propio, automatiza la parte manual y repetitiva de la enumeración de RBAC en Kubernetes tras aterrizar en un pod: localiza el o los tokens de service account montados en el nodo (o en el pod actual), y luego ejecuta en lote comprobaciones kubectl auth can-i para los verbos y recursos que le interesan al evaluador, en vez de reescribir el comando a mano para cada permiso.

Soporta dos modos que coinciden con los propios escenarios de entrenamiento de badPods — ejecutarse dentro de un pod que tiene montado el sistema de archivos del host (útil tras un escape everything-allowed o hostPath), o ejecutarse desde fuera contra un pod nombrado vía kubectl exec — lo que lo hace un complemento natural de los manifiestos de pods vulnerables de badPods al practicar o demostrar qué expone realmente un service account con permisos excesivos.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Comprobar en lote el token de service account montado en un pod comprometido contra una lista de verbos/recursos en vez de ejecutar kubectl auth can-i a mano cada vez.

  • 02

    Enumerar cada token encontrado en el filesystem de un nodo tras un escape de pod everything-allowed o hostPath, para ver cuál tiene mayor alcance en el clúster.

  • 03

    Confirmar si un service account con permisos excesivos puede crear pods, leer secrets o crear clusterrolebindings — caminos comunes hacia el compromiso total del clúster.

  • 04

    Combinarlo con los manifiestos de pods vulnerables de badPods para demostrar hallazgos de sobre-permisos RBAC en un laboratorio de entrenamiento o de cara al cliente.

PRIMEROS PASOS

Una vez dentro de un pod de Kubernetes (o con su token montado extraído), para enumerar sistemáticamente qué está autorizado a hacer exactamente el service account de ese pod en el clúster.

  1. Confirma que el acceso al clúster y la enumeración RBAC desde este pod/token están dentro del alcance autorizado.
  2. Descarga can-they.sh del repositorio badPods a la máquina del tester o cópialo dentro del pod objetivo.
  3. Desde dentro de un pod con el filesystem del host montado, ejecútalo directamente para enumerar cada token encontrado en el nodo.
  4. Desde fuera, ejecútalo contra un pod/namespace nombrado vía kubectl exec, pasando los argumentos de auth can-i a comprobar.
  5. Registra qué verbos/recursos alcanza cada service account, y marca cualquiera que habilite escalada de privilegios o movimiento lateral.
./can-they.sh "-i --list -n kube-system"

ANTES DE USARLA

Qué revisar antes de lanzarla

Es un wrapper ligero sobre kubectl auth can-i, que solo reporta lo que declara el RBAC — confirma siempre que un permiso prometedor funciona de extremo a extremo (por ejemplo, leer un secret con éxito) antes de reportarlo como explotable.

Enumerar y usar el token de service account de otro pod es acceso a credenciales contra un clúster en vivo; confirma con el cliente los namespaces y nodos en alcance antes de correrlo más allá de los pods de laboratorio que trae badPods para practicar.

Cualquier token extraído durante la enumeración es una credencial viva del clúster — trátalo como dato sensible del engagement y evita dejar copias en el filesystem del tester o de un host compartido.

SIGUE EXPLORANDO

Ver toda la fase →