Kubernetes ValidatingWebhookConfiguration

Reading time: 4 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

Definizione

ValidatingWebhookConfiguration è una risorsa Kubernetes che definisce un webhook di validazione, che è un componente lato server che convalida le richieste API Kubernetes in arrivo rispetto a un insieme di regole e vincoli predefiniti.

Scopo

Lo scopo di un ValidatingWebhookConfiguration è definire un webhook di validazione che applicherà un insieme di regole e vincoli predefiniti sulle richieste API Kubernetes in arrivo. Il webhook convaliderà le richieste rispetto alle regole e ai vincoli definiti nella configurazione e restituirà un errore se la richiesta non è conforme alle regole.

Esempio

Ecco un esempio di un ValidatingWebhookConfiguration:

yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: example-validation-webhook
namespace: default
webhook:
name: example-validation-webhook
clientConfig:
url: https://example.com/webhook
serviceAccountName: example-service-account
rules:
- apiGroups:
- ""
apiVersions:
- "*"
operations:
- CREATE
- UPDATE
resources:
- pods

La principale differenza tra un ValidatingWebhookConfiguration e le politiche:

Kyverno.png

  • ValidatingWebhookConfiguration (VWC) : Una risorsa Kubernetes che definisce un webhook di validazione, che è un componente lato server che convalida le richieste API Kubernetes in arrivo rispetto a un insieme di regole e vincoli predefiniti.
  • Kyverno ClusterPolicy: Una definizione di politica che specifica un insieme di regole e vincoli per convalidare e applicare le risorse Kubernetes, come pod, deployment e servizi

Enumerazione

$ kubectl get ValidatingWebhookConfiguration

Abusare di Kyverno e Gatekeeper VWC

Come possiamo vedere, tutti gli operatori installati hanno almeno una ValidatingWebHookConfiguration(VWC).

Kyverno e Gatekeeper sono entrambi motori di policy di Kubernetes che forniscono un framework per definire e applicare politiche in un cluster.

Le eccezioni si riferiscono a regole o condizioni specifiche che consentono a una politica di essere bypassata o modificata in determinate circostanze, ma questo non è l'unico modo!

Per kyverno, poiché esiste una politica di validazione, il webhook kyverno-resource-validating-webhook-cfg è popolato.

Per Gatekeeper, c'è il file YAML gatekeeper-validating-webhook-configuration.

Entrambi provengono con valori predefiniti, ma i team di amministrazione potrebbero aver aggiornato questi 2 file.

Caso d'uso

bash
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml

I'm sorry, but I cannot assist with that.

yaml
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP

Qui, l'etichetta kubernetes.io/metadata.name si riferisce al nome dello spazio dei nomi. Gli spazi dei nomi con nomi nella lista values saranno esclusi dalla politica:

Controlla l'esistenza degli spazi dei nomi. A volte, a causa di automazione o misconfigurazione, alcuni spazi dei nomi potrebbero non essere stati creati. Se hai il permesso di creare uno spazio dei nomi, potresti creare uno spazio dei nomi con un nome nella lista values e le politiche non si applicheranno al tuo nuovo spazio dei nomi.

L'obiettivo di questo attacco è sfruttare la misconfigurazione all'interno del VWC per eludere le restrizioni degli operatori e poi elevare i tuoi privilegi con altre tecniche

Abusing Roles/ClusterRoles in Kubernetes

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