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

This commit is contained in:
Translator
2024-12-31 18:59:03 +00:00
parent 7770a50092
commit 730ef05579
244 changed files with 8718 additions and 11559 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)
**L'auteur original de cette page est** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196)
## Definition
## Définition
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 est une ressource Kubernetes qui définit un webhook de validation, qui est un composant côté serveur qui valide les requêtes API Kubernetes entrantes par rapport à un ensemble de règles et de contraintes prédéfinies.
## Purpose
## Objectif
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.
L'objectif d'un ValidatingWebhookConfiguration est de définir un webhook de validation qui appliquera un ensemble de règles et de contraintes prédéfinies sur les requêtes API Kubernetes entrantes. Le webhook validera les requêtes par rapport aux règles et contraintes définies dans la configuration, et renverra une erreur si la requête ne respecte pas les règles.
**Example**
Here is an example of a ValidatingWebhookConfiguration:
**Exemple**
Voici un exemple de 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 : 
La principale différence entre un ValidatingWebhookConfiguration et des politiques : 
<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
## Enumeration
- **ValidatingWebhookConfiguration (VWC)** : Une ressource Kubernetes qui définit un webhook de validation, qui est un composant côté serveur qui valide les requêtes API Kubernetes entrantes par rapport à un ensemble de règles et de contraintes prédéfinies.
- **Kyverno ClusterPolicy** : Une définition de politique qui spécifie un ensemble de règles et de contraintes pour valider et appliquer les ressources Kubernetes, telles que les pods, les déploiements et les services.
## Énumération
```
$ kubectl get ValidatingWebhookConfiguration
```
### Abuser de Kyverno et Gatekeeper VWC
### Abusing Kyverno and Gatekeeper VWC
Comme nous pouvons le voir, tous les opérateurs installés ont au moins une ValidatingWebHookConfiguration (VWC).
As we can see all operators installed have at least one ValidatingWebHookConfiguration(VWC).
**Kyverno** et **Gatekeeper** sont tous deux des moteurs de politique Kubernetes qui fournissent un cadre pour définir et appliquer des politiques à travers un cluster.
**Kyverno** and **Gatekeeper** are both Kubernetes policy engines that provide a framework for defining and enforcing policies across a cluster.
Les exceptions se réfèrent à des règles ou conditions spécifiques qui permettent à une politique d'être contournée ou modifiée dans certaines circonstances, mais ce n'est pas la seule façon !
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 !
Pour **kyverno**, tant qu'il y a une politique de validation, le webhook `kyverno-resource-validating-webhook-cfg` est peuplé.
For **kyverno**, as you as there is a validating policy, the webhook `kyverno-resource-validating-webhook-cfg` is populated.
Pour Gatekeeper, il y a le fichier YAML `gatekeeper-validating-webhook-configuration`.
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
Les deux viennent avec des valeurs par défaut, mais les équipes administratrices peuvent mettre à jour ces 2 fichiers.
### Cas d'utilisation
```bash
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml
```
Now, identify the following output :
Maintenant, identifiez la sortie suivante :
```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
```
Ici, le label `kubernetes.io/metadata.name` fait référence au nom de l'espace de noms. Les espaces de noms avec des noms dans la liste `values` seront exclus de la politique :
Here, `kubernetes.io/metadata.name` label refers to the namespace name. Namespaces with names in the `values` list will be excluded from the policy :
Vérifiez l'existence des espaces de noms. Parfois, en raison de l'automatisation ou d'une mauvaise configuration, certains espaces de noms peuvent ne pas avoir été créés. Si vous avez la permission de créer un espace de noms, vous pourriez créer un espace de noms avec un nom dans la liste `values` et les politiques ne s'appliqueront pas à votre nouvel espace de noms.
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
L'objectif de cette attaque est d'exploiter la **mauvaise configuration** à l'intérieur de VWC afin de contourner les restrictions des opérateurs et ensuite d'élever vos privilèges avec d'autres techniques.
{{#ref}}
abusing-roles-clusterroles-in-kubernetes/
{{#endref}}
## References
## Références
- [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/)