Docker release_agent cgroups escape
Last updated
Last updated
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Daha fazla ayrıntı için orijinal blog yazısına bakın. Bu sadece bir özet:
Orijinal PoC:
The proof of concept (PoC) demonstrates a method to exploit cgroups by creating a release_agent
file and triggering its invocation to execute arbitrary commands on the container host. Here's a breakdown of the steps involved:
Ortamı Hazırlayın:
Bir /tmp/cgrp
dizini, cgroup için bir montaj noktası olarak hizmet vermek üzere oluşturulur.
RDMA cgroup denetleyicisi bu dizine monte edilir. RDMA denetleyicisi yoksa, alternatif olarak memory
cgroup denetleyicisinin kullanılması önerilir.
Çocuk Cgroup'u Kurun:
Montelenmiş cgroup dizini içinde "x" adında bir çocuk cgroup oluşturulur.
"x" cgroup'u için bildirimler, notify_on_release dosyasına 1 yazarak etkinleştirilir.
Release Agent'i Yapılandırın:
Konteynerin ana makinedeki yolu /etc/mtab dosyasından alınır.
Ardından, cgroup'un release_agent dosyası, elde edilen ana makine yolunda bulunan /cmd adlı bir betiği çalıştıracak şekilde yapılandırılır.
/cmd Scriptini Oluşturun ve Yapılandırın:
/cmd scripti konteyner içinde oluşturulur ve ps aux komutunu çalıştıracak şekilde yapılandırılır, çıktısı konteynerde /output adında bir dosyaya yönlendirilir. /output'un ana makinedeki tam yolu belirtilir.
Saldırıyı Tetikleme:
"x" çocuk cgroup içinde bir işlem başlatılır ve hemen sonlandırılır.
Bu, release_agent
'i (cmd betiği) tetikler, bu da ana makinede ps aux komutunu çalıştırır ve çıktıyı konteyner içindeki /output'a yazar.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)