UTS Namespace
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
ân UTS (UNIX Time-Sharing System) naamruimte is ân Linux-kernfunksie wat isolasie van twee stelselnommers bied: die gasheernaam en die NIS (Netwerk Inligtingsdiens) domeinnaam. Hierdie isolasie laat elke UTS naamruimte toe om sy eie onafhanklike gasheernaam en NIS domeinnaam te hĂȘ, wat veral nuttig is in konteinerisasiescenarioâs waar elke konteiner as ân aparte stelsel met sy eie gasheernaam moet verskyn.
Hoe dit werk:
- Wanneer ân nuwe UTS naamruimte geskep word, begin dit met ân kopie van die gasheernaam en NIS domeinnaam van sy ouernaamruimte. Dit beteken dat, by die skepping, die nuwe naamruimte self dieselfde nommers as sy ouer deel. egter, enige daaropvolgende veranderinge aan die gasheernaam of NIS domeinnaam binne die naamruimte sal nie ander naamruimtes beĂŻnvloed nie.
- Prosesse binne ân UTS naamruimte kan die gasheernaam en NIS domeinnaam verander deur die
sethostname()ensetdomainname()stelselaanroepe, onderskeidelik. Hierdie veranderinge is plaaslik vir die naamruimte en beĂŻnvloed nie ander naamruimtes of die gasheerstelsel nie. - Prosesse kan tussen naamruimtes beweeg deur die
setns()stelselaanroep of nuwe naamruimtes skep deur dieunshare()ofclone()stelselaanroepe met dieCLONE_NEWUTSvlag. Wanneer ân proses na ân nuwe naamruimte beweeg of een skep, sal dit begin om die gasheernaam en NIS domeinnaam wat met daardie naamruimte geassosieer word, te gebruik.
Laboratorium:
Skep verskillende Naamruimtes
CLI
sudo unshare -u [--mount-proc] /bin/bash
Deur ân nuwe instansie van die /proc lĂȘerstelsel te monteer as jy die parameter --mount-proc gebruik, verseker jy dat die nuwe monteernaamruimte ân akkurate en geĂŻsoleerde siening van die prosesinligting spesifiek vir daardie naamruimte het.
Fout: bash: fork: Kan nie geheue toewys nie
Wanneer unshare sonder die -f opsie uitgevoer word, word ân fout ondervind weens die manier waarop Linux nuwe PID (Proses ID) naamruimtes hanteer. Die sleutelbesonderhede en die oplossing word hieronder uiteengesit:
- Probleemverklaring:
- Die Linux-kern laat ân proses toe om nuwe naamruimtes te skep met die
unsharestelselaanroep. Die proses wat die skepping van ân nuwe PID naamruimte inisieer (genoem die âunshareâ proses) gaan egter nie in die nuwe naamruimte in nie; slegs sy kindproses gaan. - Die uitvoering van
%unshare -p /bin/bash%begin/bin/bashin dieselfde proses asunshare. Gevolglik is/bin/bashen sy kindproses in die oorspronklike PID naamruimte. - Die eerste kindproses van
/bin/bashin die nuwe naamruimte word PID 1. Wanneer hierdie proses verlaat, aktiveer dit die opruiming van die naamruimte as daar geen ander prosesse is nie, aangesien PID 1 die spesiale rol het om weesprosesse aan te neem. Die Linux-kern sal dan PID-toewysing in daardie naamruimte deaktiveer.
- Gevolg:
- Die uitgang van PID 1 in ân nuwe naamruimte lei tot die opruiming van die
PIDNS_HASH_ADDINGvlag. Dit lei tot diealloc_pidfunksie wat misluk om ân nuwe PID toe te wys wanneer ân nuwe proses geskep word, wat die âKan nie geheue toewys nieâ fout produseer.
- Oplossing:
- Die probleem kan opgelos word deur die
-fopsie saam metunsharete gebruik. Hierdie opsie maak datunshareân nuwe proses fork nadat die nuwe PID naamruimte geskep is. - Die uitvoering van
%unshare -fp /bin/bash%verseker dat dieunshareopdrag self PID 1 in die nuwe naamruimte word./bin/bashen sy kindproses is dan veilig binne hierdie nuwe naamruimte, wat die voortydige uitgang van PID 1 voorkom en normale PID-toewysing toelaat.
Deur te verseker dat unshare met die -f vlag loop, word die nuwe PID naamruimte korrek gehandhaaf, wat toelaat dat /bin/bash en sy sub-prosesse kan werk sonder om die geheue toewysing fout te ondervind.
Docker
docker run -ti --name ubuntu1 -v /usr:/ubuntu1 ubuntu bash
Kontroleer in watter naamruimte jou proses is
ls -l /proc/self/ns/uts
lrwxrwxrwx 1 root root 0 Apr 4 20:49 /proc/self/ns/uts -> 'uts:[4026531838]'
Vind alle UTS-namespaces
sudo find /proc -maxdepth 3 -type l -name uts -exec readlink {} \; 2>/dev/null | sort -u
# Find the processes with an specific namespace
sudo find /proc -maxdepth 3 -type l -name uts -exec ls -l {} \; 2>/dev/null | grep <ns-number>
Gaan binne ân UTS-namespace in
nsenter -u TARGET_PID --pid /bin/bash
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die đŹ Discord groep of die telegram groep of volg ons op Twitter đŠ @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
HackTricks

