Kubernetes OPA Gatekeeper bypass

Reading time: 3 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

L'autore originale di questa pagina è Guillaume

Abusare di una configurazione errata

Enumerare le regole

Avere una panoramica può aiutare a sapere quali regole sono attive, in quale modalità e chi può bypassarle.

Con la CLI

bash
$ 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

ConstraintTemplate e Constraint possono essere utilizzati in Open Policy Agent (OPA) Gatekeeper per applicare regole sulle risorse Kubernetes.

bash
$ kubectl get constrainttemplates
$ kubectl get k8smandatorylabels

Con l'interfaccia grafica

Un'interfaccia grafica potrebbe essere disponibile per accedere alle regole OPA con Gatekeeper Policy Manager. È "un semplice interfaccia web in sola lettura per visualizzare lo stato delle politiche OPA Gatekeeper in un cluster Kubernetes."

Cerca il servizio esposto:

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

Namespace esclusi

Come illustrato nell'immagine sopra, alcune regole potrebbero non essere applicate universalmente a tutti i namespace o utenti. Invece, operano su base whitelist. Ad esempio, il vincolo liveness-probe è escluso dall'applicazione ai cinque namespace specificati.

Bypass

Con una panoramica completa della configurazione di Gatekeeper, è possibile identificare potenziali misconfigurazioni che potrebbero essere sfruttate per ottenere privilegi. Cerca namespace in whitelist o esclusi dove la regola non si applica, e poi esegui il tuo attacco lì.

Abusing Roles/ClusterRoles in Kubernetes

Sfruttare ValidatingWebhookConfiguration

Un altro modo per bypassare i vincoli è concentrarsi sulla risorsa ValidatingWebhookConfiguration:

Kubernetes ValidatingWebhookConfiguration

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks