Docker release_agent cgroups escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Для отримання додаткової інформації зверніться до оригінального блогу. Це лише резюме:
Оригінальний PoC:
Доказ концепції (PoC) демонструє метод експлуатації cgroups шляхом створення файлу release_agent
і виклику його для виконання довільних команд на хості контейнера. Ось розбивка кроків, що беруть участь:
Підготовка середовища:
Створюється каталог /tmp/cgrp
, який слугує точкою монтування для cgroup.
Контролер cgroup RDMA монтується в цей каталог. У разі відсутності контролера RDMA рекомендується використовувати контролер cgroup memory
як альтернативу.
Налаштуйте дочірній cgroup:
Дочірній cgroup з назвою "x" створюється в змонтованій директорії cgroup.
Сповіщення увімкнені для cgroup "x" шляхом запису 1 у його файл notify_on_release.
Налаштуйте Release Agent:
Шлях контейнера на хості отримується з файлу /etc/mtab.
Файл release_agent cgroup потім налаштовується для виконання скрипту з назвою /cmd, розташованого за отриманим шляхом хоста.
Створіть та налаштуйте скрипт /cmd:
Скрипт /cmd створюється всередині контейнера та налаштовується для виконання ps aux, перенаправляючи вихід у файл з назвою /output в контейнері. Вказується повний шлях до /output на хості.
Запустіть атаку:
Процес ініціюється в "x" дочірньому cgroup і відразу ж завершується.
Це викликає release_agent
(скрипт /cmd), який виконує ps aux на хості та записує вихідні дані в /output всередині контейнера.
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)