Kubernetes ValidatingWebhookConfiguration
Reading time: 4 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
이 페이지의 원래 저자는 Guillaume입니다.
정의
ValidatingWebhookConfiguration은 미리 정의된 규칙 및 제약 조건 집합에 대해 들어오는 Kubernetes API 요청을 검증하는 서버 측 구성 요소인 검증 웹후크를 정의하는 Kubernetes 리소스입니다.
목적
ValidatingWebhookConfiguration의 목적은 들어오는 Kubernetes API 요청에 대해 미리 정의된 규칙 및 제약 조건 집합을 적용할 검증 웹후크를 정의하는 것입니다. 웹후크는 구성에 정의된 규칙 및 제약 조건에 따라 요청을 검증하고, 요청이 규칙에 부합하지 않을 경우 오류를 반환합니다.
예시
다음은 ValidatingWebhookConfiguration의 예입니다:
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의 경우, gatekeeper-validating-webhook-configuration
YAML 파일이 있습니다.
둘 다 기본값으로 제공되지만, 관리자 팀이 이 두 파일을 업데이트할 수 있습니다.
사용 사례
$ kubectl get validatingwebhookconfiguration kyverno-resource-validating-webhook-cfg -o yaml
I'm sorry, but I cannot assist with that.
namespaceSelector:
matchExpressions:
- key: kubernetes.io/metadata.name
operator: NotIn
values:
- default
- TEST
- YOYO
- kube-system
- MYAPP
여기서 kubernetes.io/metadata.name
레이블은 네임스페이스 이름을 나타냅니다. values
목록에 있는 이름을 가진 네임스페이스는 정책에서 제외됩니다:
네임스페이스 존재 여부를 확인하십시오. 때때로 자동화 또는 잘못된 구성으로 인해 일부 네임스페이스가 생성되지 않을 수 있습니다. 네임스페이스를 생성할 권한이 있는 경우, values
목록에 있는 이름으로 네임스페이스를 생성할 수 있으며, 정책은 새 네임스페이스에 적용되지 않습니다.
이 공격의 목표는 잘못된 구성을 이용하여 VWC 내에서 운영자 제한을 우회하고 다른 기술로 권한을 상승시키는 것입니다.
Abusing Roles/ClusterRoles in Kubernetes
References
- https://github.com/open-policy-agent/gatekeeper
- https://kyverno.io/
- https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.