release_agent exploit - Relative Paths to PIDs
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)
Daha fazla ayrıntı için https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html blog gönderisini kontrol edin. Bu sadece bir özet:
Teknik, bir konteyner içinden ana makine kodunu çalıştırma yöntemini özetlemektedir ve Kata Containers veya belirli devicemapper
ayarları gibi konteynerin dosya sistemi yolunu ana makinede gizleyen depolama sürücüsü yapılandırmalarının getirdiği zorlukları aşmaktadır.
Ana adımlar:
İşlem Kimliklerini (PID) Bulma: Linux sahte dosya sistemindeki /proc/<pid>/root
sembolik bağlantısını kullanarak, konteyner içindeki herhangi bir dosyaya ana makinenin dosya sistemi ile ilgili olarak erişilebilir. Bu, konteynerin dosya sistemi yolunu ana makinede bilme gereğini ortadan kaldırır.
PID Kırma: Ana makinedeki PID'leri aramak için bir kaba kuvvet yaklaşımı kullanılır. Bu, /proc/<pid>/root/<file>
yolunda belirli bir dosyanın varlığını sırayla kontrol ederek yapılır. Dosya bulunduğunda, ilgili PID'nin hedef konteyner içinde çalışan bir işleme ait olduğunu gösterir.
Çalıştırmayı Tetikleme: Tahmin edilen PID yolu cgroups release_agent
dosyasına yazılır. Bu işlem, release_agent
'in çalıştırılmasını tetikler. Bu adımın başarısı, bir çıktı dosyasının oluşturulup oluşturulmadığını kontrol ederek doğrulanır.
Sömürü süreci, konteyner içinde çalışan bir işlemin doğru PID'sini tahmin ederek ana makinede bir yük çalıştırmayı amaçlayan daha ayrıntılı bir eylem setini içerir. İşte nasıl gelişir:
Ortamı Başlat: Ana makinede bir yük betiği (payload.sh
) hazırlanır ve cgroup manipülasyonu için benzersiz bir dizin oluşturulur.
Yükü Hazırla: Ana makinede çalıştırılacak komutları içeren yük betiği yazılır ve çalıştırılabilir hale getirilir.
Cgroup'u Kur: Cgroup monte edilir ve yapılandırılır. Yükün cgroup serbest bırakıldığında çalıştırılmasını sağlamak için notify_on_release
bayrağı ayarlanır.
PID'yi Kaba Kuvvetle Kır: Bir döngü, potansiyel PID'ler arasında döner ve her tahmin edilen PID'yi release_agent
dosyasına yazar. Bu, yük betiğini release_agent
olarak ayarlar.
Çalıştırmayı Tetikle ve Kontrol Et: Her PID için, cgroup'un cgroup.procs
dosyasına yazılır, eğer PID doğruysa release_agent
'in çalıştırılmasını tetikler. Döngü, yük betiğinin çıktısı bulunana kadar devam eder, bu da başarılı bir çalıştırmayı gösterir.
Blog gönderisinden PoC:
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)