Vremenski Namespac
Reading time: 4 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.
Osnovne Informacije
Vremenski namespac u Linuxu omogućava offsete po namespacima za sistemske monotone i boot-time satove. Često se koristi u Linux kontejnerima za promenu datuma/vremena unutar kontejnera i podešavanje satova nakon vraćanja iz tačke preuzimanja ili snimka.
Laboratorija:
Kreirajte različite Namespacove
CLI
sudo unshare -T [--mount-proc] /bin/bash
Montiranjem nove instance /proc
datotečnog sistema ako koristite parametar --mount-proc
, osiguravate da nova mount namespace ima tačan i izolovan prikaz informacija o procesima specifičnim za tu namespace.
Greška: bash: fork: Ne može da dodeli memoriju
Kada se unshare
izvrši bez opcije -f
, dolazi do greške zbog načina na koji Linux upravlja novim PID (ID procesa) namespace-ima. Ključni detalji i rešenje su navedeni u nastavku:
- Objašnjenje problema:
- Linux kernel omogućava procesu da kreira nove namespace-e koristeći
unshare
sistemski poziv. Međutim, proces koji inicira kreiranje novog PID namespace-a (poznat kao "unshare" proces) ne ulazi u novi namespace; samo njegovi podprocesi to čine. - Pokretanjem
%unshare -p /bin/bash%
pokreće se/bin/bash
u istom procesu kaounshare
. Kao rezultat,/bin/bash
i njegovi podprocesi su u originalnom PID namespace-u. - Prvi podproces
/bin/bash
u novom namespace-u postaje PID 1. Kada ovaj proces izađe, pokreće čišćenje namespace-a ako nema drugih procesa, jer PID 1 ima posebnu ulogu usvajanja siročadi. Linux kernel će tada onemogućiti dodelu PID-a u tom namespace-u.
- Posledica:
- Izlazak PID 1 u novom namespace-u dovodi do čišćenja
PIDNS_HASH_ADDING
oznake. To rezultira neuspehom funkcijealloc_pid
da dodeli novi PID prilikom kreiranja novog procesa, što proizvodi grešku "Ne može da dodeli memoriju".
- Rešenje:
- Problem se može rešiti korišćenjem
-f
opcije saunshare
. Ova opcija čini daunshare
fork-uje novi proces nakon kreiranja novog PID namespace-a. - Izvršavanje
%unshare -fp /bin/bash%
osigurava da samunshare
komanda postane PID 1 u novom namespace-u./bin/bash
i njegovi podprocesi su tada sigurno sadržani unutar ovog novog namespace-a, sprečavajući prevremeni izlazak PID 1 i omogućavajući normalnu dodelu PID-a.
Osiguravanjem da unshare
radi sa -f
oznakom, novi PID namespace se ispravno održava, omogućavajući /bin/bash
i njegovim podprocesima da funkcionišu bez susretanja greške u dodeli memorije.
Docker
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
Proverite u kojem je namespace vaš proces
ls -l /proc/self/ns/time
lrwxrwxrwx 1 root root 0 Apr 4 21:16 /proc/self/ns/time -> 'time:[4026531834]'
Pronađi sve Time namespace-ove
sudo find /proc -maxdepth 3 -type l -name time -exec readlink {} \; 2>/dev/null | sort -u
# Find the processes with an specific namespace
sudo find /proc -maxdepth 3 -type l -name time -exec ls -l {} \; 2>/dev/null | grep <ns-number>
Uđite u vremenski prostor
nsenter -T TARGET_PID --pid /bin/bash
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.