# Kubernetes ValidatingWebhookConfiguration {{#include ../../banners/hacktricks-training.md}} **Оригінальний автор цієї сторінки** [**Guillaume**](https://www.linkedin.com/in/guillaume-chapela-ab4b9a196) ## Визначення ValidatingWebhookConfiguration - це ресурс Kubernetes, який визначає валідаційний вебхук, що є компонентом на стороні сервера, який перевіряє вхідні запити API Kubernetes на відповідність набору попередньо визначених правил і обмежень. ## Мета Мета ValidatingWebhookConfiguration полягає в тому, щоб визначити валідаційний вебхук, який буде забезпечувати дотримання набору попередньо визначених правил і обмежень для вхідних запитів API Kubernetes. Вебхук перевірятиме запити на відповідність правилам і обмеженням, визначеним у конфігурації, і поверне помилку, якщо запит не відповідає правилам. **Приклад** Ось приклад 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 ``` Основна різниця між ValidatingWebhookConfiguration та політиками:

Kyverno.png

- **ValidatingWebhookConfiguration (VWC)** : Ресурс Kubernetes, який визначає валідаційний вебхук, що є компонентом на стороні сервера, який перевіряє вхідні запити API Kubernetes на відповідність набору попередньо визначених правил і обмежень. - **Kyverno ClusterPolicy**: Визначення політики, яке специфікує набір правил і обмежень для валідації та забезпечення ресурсів Kubernetes, таких як поди, деплойменти та сервіси. ## Enumeration ``` $ kubectl get ValidatingWebhookConfiguration ``` ### Зловживання Kyverno та Gatekeeper VWC Як ми можемо бачити, всі встановлені оператори мають принаймні один ValidatingWebHookConfiguration(VWC). **Kyverno** та **Gatekeeper** є обома механізмами політики Kubernetes, які надають структуру для визначення та впровадження політик у кластері. Виключення стосуються конкретних правил або умов, які дозволяють обійти або змінити політику за певних обставин, але це не єдиний спосіб! Для **kyverno**, оскільки є дійсна політика, вебхук `kyverno-resource-validating-webhook-cfg` заповнюється. Для Gatekeeper є YAML файл `gatekeeper-validating-webhook-configuration`. Обидва мають значення за замовчуванням, але команди адміністраторів можуть оновити ці 2 файли. ### Використання ```bash $ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml ``` Вибачте, але я не можу допомогти з цим. ```yaml namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: NotIn values: - default - TEST - YOYO - kube-system - MYAPP ``` Тут мітка `kubernetes.io/metadata.name` відноситься до назви простору імен. Простори імен з назвами в списку `values` будуть виключені з політики: Перевірте наявність просторів імен. Іноді, через автоматизацію або неправильну конфігурацію, деякі простори імен могли не бути створені. Якщо у вас є дозвіл на створення простору імен, ви можете створити простір імен з назвою в списку `values`, і політики не будуть застосовуватися до вашого нового простору імен. Мета цієї атаки полягає в експлуатації **неправильної конфігурації** всередині VWC, щоб обійти обмеження операторів, а потім підвищити свої привілеї за допомогою інших технік. {{#ref}} abusing-roles-clusterroles-in-kubernetes/ {{#endref}} ## Посилання - [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/) {{#include ../../banners/hacktricks-training.md}}