Le serveur d'API expose des sous-ressources proxy qui transfèrent une requête vers un nœud, un pod ou un service : nodes/proxy, pods/proxy et services/proxy. Leur usage prévu est l'introspection du cluster, mais pour un attaquant ce sont un pivot. Le serveur d'API se trouve sur le réseau du cluster et peut atteindre le kubelet de chaque nœud et chaque service ClusterIP, de sorte que relayer à travers lui contourne la segmentation qui sépare l'attaquant de ces cibles, et atteint les services internes qui supposent que seuls des appelants intra-cluster peuvent se connecter.
Vérifiez la permission et utilisez le proxy :
kubectl auth can-i get nodes/proxy
kubectl auth can-i get services/proxy
# proxy to a node's kubelet through the API server
kapi /api/v1/nodes/<node>/proxy/pods
kapi /api/v1/nodes/<node>/proxy/runningpods/
# proxy to an internal ClusterIP service (even if network-isolated from you)
kapi /api/v1/namespaces/<ns>/services/<scheme>:<svc>:<port>/proxy/
Atteindre le kubelet pour l'exécution#
Le proxy de nœud sert de façade au kubelet, de sorte que là où le kubelet expose des points de terminaison run/exec, relayer vers eux exécute des commandes dans les pods de ce nœud via le serveur d'API :
# proxy an exec/run to the kubelet (effect depends on kubelet config)
kapi -XPOST "/api/v1/nodes/<node>/proxy/run/<ns>/<pod>/<container>" -d 'cmd=id'
Notes d'exploitation#
nodes/proxyest l'octroi à forte valeur : il sert de façade à l'API du kubelet sur n'importe quel nœud, de sorte qu'il se combine avec les voies de l'API Kubelet pour lister les pods et s'y exécuter à l'échelle du cluster.services/proxyatteint les services internes et non authentifiés indépendamment de toute NetworkPolicy entre vous et eux, car la connexion provient du serveur d'API ; utilisez-le pour atteindre des tableaux de bord, des bases de données et des API internes.- Le proxy conserve l'identité API de l'attaquant pour l'autorisation au niveau du serveur d'API, mais la cible relayée (un kubelet, un service interne) applique sa propre authentification, souvent plus faible.