Translated ['.github/pull_request_template.md', 'src/pentesting-cloud/az

This commit is contained in:
Translator
2024-12-31 18:57:14 +00:00
parent 7770a50092
commit 77a009d308
244 changed files with 8632 additions and 11470 deletions

View File

@@ -1,106 +1,94 @@
# Kubernetes ValidatingWebhookConfiguration
**The original author of this page is** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)
**Der ursprüngliche Autor dieser Seite ist** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)
## Definition
ValidatingWebhookConfiguration is a Kubernetes resource that defines a validating webhook, which is a server-side component that validates incoming Kubernetes API requests against a set of predefined rules and constraints.
ValidatingWebhookConfiguration ist eine Kubernetes-Ressource, die einen Validierungswebhook definiert, der eine serverseitige Komponente ist, die eingehende Kubernetes-API-Anfragen gegen eine Reihe vordefinierter Regeln und Einschränkungen validiert.
## Purpose
## Zweck
The purpose of a ValidatingWebhookConfiguration is to define a validating webhook that will enforce a set of predefined rules and constraints on incoming Kubernetes API requests. The webhook will validate the requests against the rules and constraints defined in the configuration, and will return an error if the request does not conform to the rules.
Der Zweck einer ValidatingWebhookConfiguration besteht darin, einen Validierungswebhook zu definieren, der eine Reihe vordefinierter Regeln und Einschränkungen für eingehende Kubernetes-API-Anfragen durchsetzt. Der Webhook validiert die Anfragen gegen die in der Konfiguration definierten Regeln und Einschränkungen und gibt einen Fehler zurück, wenn die Anfrage nicht den Regeln entspricht.
**Example**
Here is an example of a ValidatingWebhookConfiguration:
**Beispiel**
Hier ist ein Beispiel für eine ValidatingWebhookConfiguration:
```yaml
apiVersion: admissionregistration.k8s.io/v1
kind: ValidatingWebhookConfiguration
metadata:
name: example-validation-webhook
namespace: default
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
name: example-validation-webhook
clientConfig:
url: https://example.com/webhook
serviceAccountName: example-service-account
rules:
- apiGroups:
- ""
apiVersions:
- "*"
operations:
- CREATE
- UPDATE
resources:
- pods
```
The main difference between a ValidatingWebhookConfiguration and policies : 
Der Hauptunterschied zwischen einer ValidatingWebhookConfiguration und Richtlinien : 
<figure><img src="../../images/Kyverno.png" alt=""><figcaption><p>Kyverno.png</p></figcaption></figure>
- **ValidatingWebhookConfiguration (VWC)** : A Kubernetes resource that defines a validating webhook, which is a server-side component that validates incoming Kubernetes API requests against a set of predefined rules and constraints.
- **Kyverno ClusterPolicy**: A policy definition that specifies a set of rules and constraints for validating and enforcing Kubernetes resources, such as pods, deployments, and services
- **ValidatingWebhookConfiguration (VWC)** : Eine Kubernetes-Ressource, die einen Validierungswebhook definiert, der eine serverseitige Komponente ist, die eingehende Kubernetes-API-Anfragen anhand einer Reihe vordefinierter Regeln und Einschränkungen validiert.
- **Kyverno ClusterPolicy**: Eine Richtliniendefinition, die eine Reihe von Regeln und Einschränkungen für die Validierung und Durchsetzung von Kubernetes-Ressourcen wie Pods, Deployments und Services spezifiziert.
## Enumeration
```
$ kubectl get ValidatingWebhookConfiguration
```
### Missbrauch von Kyverno und Gatekeeper VWC
### Abusing Kyverno and Gatekeeper VWC
Wie wir sehen können, haben alle installierten Operatoren mindestens eine ValidatingWebHookConfiguration (VWC).
As we can see all operators installed have at least one ValidatingWebHookConfiguration(VWC).
**Kyverno** und **Gatekeeper** sind beide Kubernetes-Policy-Engines, die einen Rahmen für die Definition und Durchsetzung von Richtlinien in einem Cluster bieten.
**Kyverno** and **Gatekeeper** are both Kubernetes policy engines that provide a framework for defining and enforcing policies across a cluster.
Ausnahmen beziehen sich auf spezifische Regeln oder Bedingungen, die es ermöglichen, eine Richtlinie unter bestimmten Umständen zu umgehen oder zu ändern, aber das ist nicht der einzige Weg!
Exceptions refer to specific rules or conditions that allow a policy to be bypassed or modified under certain circumstances but this is not the only way !
Für **kyverno**, sobald eine validierende Richtlinie vorhanden ist, wird das Webhook `kyverno-resource-validating-webhook-cfg` befüllt.
For **kyverno**, as you as there is a validating policy, the webhook `kyverno-resource-validating-webhook-cfg` is populated.
Für Gatekeeper gibt es die `gatekeeper-validating-webhook-configuration` YAML-Datei.
For Gatekeeper, there is `gatekeeper-validating-webhook-configuration` YAML file.
Both come from with default values but the Administrator teams might updated those 2 files.
### Use Case
Beide kommen mit Standardwerten, aber die Administratorenteams könnten diese 2 Dateien aktualisiert haben.
### Anwendungsfall
```bash
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml
```
Now, identify the following output :
Jetzt identifizieren Sie die folgende Ausgabe:
```yaml
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP
```
Hier bezieht sich das Label `kubernetes.io/metadata.name` auf den Namen des Namensraums. Namensräume mit Namen in der `values`-Liste werden von der Richtlinie ausgeschlossen:
Here, `kubernetes.io/metadata.name` label refers to the namespace name. Namespaces with names in the `values` list will be excluded from the policy :
Überprüfen Sie die Existenz von Namensräumen. Manchmal wurden aufgrund von Automatisierung oder Fehlkonfiguration einige Namensräume möglicherweise nicht erstellt. Wenn Sie die Berechtigung haben, einen Namensraum zu erstellen, könnten Sie einen Namensraum mit einem Namen in der `values`-Liste erstellen, und die Richtlinien würden auf Ihren neuen Namensraum nicht angewendet.
Check namespaces existence. Sometimes, due to automation or misconfiguration, some namespaces might have not been created. If you have permission to create namespace, you could create a namespace with a name in the `values` list and policies won't apply your new namespace.
The goal of this attack is to exploit **misconfiguration** inside VWC in order to bypass operators restrictions and then elevate your privileges with other techniques
Das Ziel dieses Angriffs ist es, **Fehlkonfigurationen** innerhalb von VWC auszunutzen, um die Einschränkungen der Betreiber zu umgehen und dann Ihre Berechtigungen mit anderen Techniken zu erhöhen.
{{#ref}}
abusing-roles-clusterroles-in-kubernetes/
{{#endref}}
## References
## Referenzen
- [https://github.com/open-policy-agent/gatekeeper](https://github.com/open-policy-agent/gatekeeper)
- [https://kyverno.io/](https://kyverno.io/)
- [https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/](https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/)