Docker release_agent cgroups escape
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aby uzyskać więcej szczegółów, zapoznaj się z oryginalnym wpisem na blogu. To tylko podsumowanie:
Oryginalny PoC:
Dowód koncepcji (PoC) demonstruje metodę wykorzystania cgroups poprzez utworzenie pliku release_agent
i wywołanie go w celu wykonania dowolnych poleceń na hoście kontenera. Oto podział kroków zaangażowanych w ten proces:
Przygotowanie środowiska:
Tworzony jest katalog /tmp/cgrp
, który służy jako punkt montowania dla cgroup.
Kontroler cgroup RDMA jest montowany do tego katalogu. W przypadku braku kontrolera RDMA, sugeruje się użycie kontrolera cgroup memory
jako alternatywy.
Ustawienie Cgroup Dziecka:
Cgroup dziecka o nazwie "x" jest tworzona w zamontowanym katalogu cgroup.
Powiadomienia są włączone dla cgroup "x" poprzez zapisanie 1 do pliku notify_on_release.
Skonfiguruj Agenta Zwolnienia:
Ścieżka kontenera na hoście jest uzyskiwana z pliku /etc/mtab.
Plik release_agent cgroup jest następnie konfigurowany do wykonania skryptu o nazwie /cmd znajdującego się w uzyskanej ścieżce hosta.
Utwórz i skonfiguruj skrypt /cmd:
Skrypt /cmd jest tworzony wewnątrz kontenera i jest skonfigurowany do wykonywania ps aux, przekierowując wyjście do pliku o nazwie /output w kontenerze. Pełna ścieżka do /output na hoście jest określona.
Wyzwól Atak:
Proces jest inicjowany w "x" dziecinnym cgroup i jest natychmiast kończony.
To wyzwala release_agent
(skrypt /cmd), który wykonuje ps aux na hoście i zapisuje wynik do /output w kontenerze.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)