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)
Za više detalja proverite blog post na https://ajxchapman.github.io/containers/2020/11/19/privileged-container-escape.html. Ovo je samo sažetak:
Tehnika opisuje metodu za izvršavanje koda domaćina iz kontejnera, prevazilaženje izazova koje postavljaju konfiguracije drajvera za skladištenje koje prikrivaju putanju datotečnog sistema kontejnera na domaćinu, kao što su Kata Containers ili specifične devicemapper
postavke.
Ključni koraci:
Lociranje ID-eva procesa (PID-ova): Korišćenjem simboličke veze /proc/<pid>/root
u Linux pseudo-datotečnom sistemu, bilo koja datoteka unutar kontejnera može se pristupiti u odnosu na datotečni sistem domaćina. Ovo zaobilazi potrebu da se zna putanja datotečnog sistema kontejnera na domaćinu.
PID Bashing: Koristi se pristup silom da se pretražuju PID-ovi na domaćinu. Ovo se radi sekvencijalnim proveravanjem prisustva specifične datoteke na /proc/<pid>/root/<file>
. Kada se datoteka pronađe, to ukazuje da odgovarajući PID pripada procesu koji se izvršava unutar ciljanog kontejnera.
Pokretanje izvršenja: Pogađana putanja PID-a se upisuje u datoteku cgroups release_agent
. Ova akcija pokreće izvršenje release_agent
. Uspeh ovog koraka se potvrđuje proverom kreiranja izlazne datoteke.
Proces eksploatacije uključuje detaljniji set akcija, sa ciljem izvršavanja payload-a na domaćinu pogađanjem tačnog PID-a procesa koji se izvršava unutar kontejnera. Evo kako se odvija:
Inicijalizacija okruženja: Payload skripta (payload.sh
) se priprema na domaćinu, a jedinstveni direktorijum se kreira za manipulaciju cgroup-om.
Priprema payload-a: Payload skripta, koja sadrži komande koje treba izvršiti na domaćinu, se piše i postavlja kao izvršna.
Postavljanje cgroup-a: Cgroup se montira i konfiguriše. notify_on_release
zastavica se postavlja da osigura da se payload izvrši kada se cgroup oslobodi.
Brute Force PID: Petlja prolazi kroz potencijalne PID-ove, upisujući svaki pogađani PID u datoteku release_agent
. Ovo efektivno postavlja payload skriptu kao release_agent
.
Pokretanje i provera izvršenja: Za svaki PID, cgroup.procs
se upisuje, pokrećući izvršenje release_agent
ako je PID tačan. Petlja se nastavlja dok se ne pronađe izlaz payload skripte, što ukazuje na uspešno izvršenje.
PoC iz blog posta:
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)