mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-31 23:15:48 -08:00
Translated ['.github/pull_request_template.md', 'src/pentesting-cloud/az
This commit is contained in:
@@ -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/)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user