Kubernetes OPA Gatekeeper 绕过

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

本页面的原作者是 Guillaume

滥用错误配置

枚举规则

了解概况可能有助于知道哪些规则是活动的,处于什么模式,以及谁可以绕过它。

使用 CLI

$ kubectl api-resources | grep gatekeeper
k8smandatoryannotations                                                             constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryAnnotations
k8smandatorylabels                                                                  constraints.gatekeeper.sh/v1beta1                  false        K8sMandatoryLabel
constrainttemplates                                                                 templates.gatekeeper.sh/v1                         false        ConstraintTemplate

ConstraintTemplateConstraint 可以在 Open Policy Agent (OPA) Gatekeeper 中用于对 Kubernetes 资源强制执行规则。

$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

使用图形用户界面

可以使用 Gatekeeper Policy Manager 访问 OPA 规则。它是“一个简单的 只读 网络用户界面,用于查看 Kubernetes 集群中 OPA Gatekeeper 策略的状态。”

搜索暴露的服务:

$ kubectl get services -A | grep gatekeeper
$ kubectl get services -A | grep 'gatekeeper-policy-manager-system'

排除的命名空间

如上图所示,某些规则可能不会在所有命名空间或用户中普遍适用。相反,它们是基于白名单的。例如,liveness-probe 约束被排除在五个指定的命名空间之外。

绕过

通过全面了解 Gatekeeper 配置,可以识别潜在的错误配置,这些配置可能被利用以获取权限。寻找白名单或排除的命名空间,在这些地方规则不适用,然后在那里进行攻击。

Abusing Roles/ClusterRoles in Kubernetes

滥用 ValidatingWebhookConfiguration

绕过约束的另一种方法是关注 ValidatingWebhookConfiguration 资源:

Kubernetes ValidatingWebhookConfiguration

参考

Tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks