# Kubernetes OPA Gatekeeper bypass

{{#include ../../../banners/hacktricks-training.md}}

**L'autore originale di questa pagina è** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)

## 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."

<figure><img src="../../../images/05-constraints.png" alt=""><figcaption></figcaption></figure>

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ì.

{{#ref}}
../abusing-roles-clusterroles-in-kubernetes/
{{#endref}}

## Sfruttare ValidatingWebhookConfiguration

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

{{#ref}}
../kubernetes-validatingwebhookconfiguration.md
{{#endref}}

## Riferimenti

- [https://github.com/open-policy-agent/gatekeeper](https://github.com/open-policy-agent/gatekeeper)
- [https://github.com/sighupio/gatekeeper-policy-manager](https://github.com/sighupio/gatekeeper-policy-manager)

{{#include ../../../banners/hacktricks-training.md}}
