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.
- Confirma que el acceso al clúster y la enumeración RBAC desde este pod/token están dentro del alcance autorizado.
- Descarga can-they.sh del repositorio badPods a la máquina del tester o cópialo dentro del pod objetivo.
- Desde dentro de un pod con el filesystem del host montado, ejecútalo directamente para enumerar cada token encontrado en el nodo.
- Desde fuera, ejecútalo contra un pod/namespace nombrado vía kubectl exec, pasando los argumentos de auth can-i a comprobar.
- 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.