euid, ruid, suid
Gebruiker Identifikasie Veranderlikes
ruid
: Die werklike gebruiker ID dui die gebruiker aan wat die proses begin het.euid
: Bekend as die effektiewe gebruiker ID, dit verteenwoordig die gebruiker identiteit wat deur die stelsel gebruik word om proses bevoegdhede te bepaal. Gewoonlik spieëleuid
ruid
, behalwe in gevalle soos 'n SetUID binêre uitvoering, waareuid
die identiteit van die lêer eienaar aanneem, wat spesifieke operasionele toestemmings toeken.suid
: Hierdie besparende gebruiker ID is belangrik wanneer 'n hoë-bevoegdheid proses (gewoonlik wat as root loop) tydelik sy bevoegdhede moet prysgee om sekere take uit te voer, net om later sy aanvanklike verhoogde status te herwin.
Belangrike Nota
'n Proses wat nie onder root werk nie, kan slegs sy euid
aanpas om te ooreenstem met die huidige ruid
, euid
, of suid
.
Verstaan set*uid Funksies
setuid
: Teen die aanvanklike aannames,setuid
pas hoofsaaklikeuid
aan eerder asruid
. Spesifiek, vir bevoegde prosesse, dit stelruid
,euid
, ensuid
in lyn met die gespesifiseerde gebruiker, dikwels root, wat hierdie ID's effektief versterk as gevolg van die oorheersendesuid
. Gedetailleerde insigte kan gevind word in die setuid man bladsy.setreuid
ensetresuid
: Hierdie funksies stel in staat tot die nuanses van aanpassing vanruid
,euid
, ensuid
. Hulle vermoëns is egter afhanklik van die proses se bevoegdheidsvlak. Vir nie-root prosesse is aanpassings beperk tot die huidige waardes vanruid
,euid
, ensuid
. In teenstelling, root prosesse of dié metCAP_SETUID
vermoë kan arbitrêre waardes aan hierdie ID's toeken. Meer inligting kan verkry word van die setresuid man bladsy en die setreuid man bladsy.
Hierdie funksies is nie ontwerp as 'n sekuriteitsmeganisme nie, maar om die beoogde operasionele vloei te fasiliteer, soos wanneer 'n program 'n ander gebruiker se identiteit aanneem deur sy effektiewe gebruiker ID te verander.
Opmerklik, terwyl setuid
'n algemene keuse mag wees vir bevoegdheid verhoging na root (aangesien dit al die ID's na root stel), is dit belangrik om te onderskei tussen hierdie funksies om gebruiker ID gedrag in verskillende scenario's te verstaan en te manipuleer.
Program Uitvoeringsmeganismes in Linux
execve
Stelselsoproep
execve
StelselsoproepFunksionaliteit:
execve
begin 'n program, bepaal deur die eerste argument. Dit neem twee array argumente,argv
vir argumente enenvp
vir die omgewing.Gedrag: Dit behou die geheue ruimte van die oproeper maar verfris die stapel, hoop, en data segmente. Die program se kode word vervang deur die nuwe program.
Gebruiker ID Bewaring:
ruid
,euid
, en aanvullende groep ID's bly onveranderd.euid
mag nuanses ondergaan as die nuwe program die SetUID bit ingestel het.suid
word opgedateer vaneuid
na uitvoering.Dokumentasie: Gedetailleerde inligting kan gevind word op die
execve
man bladsy.
system
Funksie
system
FunksieFunksionaliteit: Anders as
execve
, skepsystem
'n kind proses met behulp vanfork
en voer 'n opdrag binne daardie kind proses uit metexecl
.Opdrag Uitvoering: Voer die opdrag uit via
sh
metexecl("/bin/sh", "sh", "-c", command, (char *) NULL);
.Gedrag: Aangesien
execl
'n vorm vanexecve
is, werk dit soortgelyk maar in die konteks van 'n nuwe kind proses.Dokumentasie: Verdere insigte kan verkry word van die
system
man bladsy.
Gedrag van bash
en sh
met SUID
bash
en sh
met SUIDbash
:Het 'n
-p
opsie wat beïnvloed hoeeuid
enruid
hanteer word.Sonder
-p
, stelbash
euid
in opruid
as hulle aanvanklik verskil.Met
-p
, word die aanvanklikeeuid
behou.Meer besonderhede kan gevind word op die
bash
man bladsy.sh
:Besit nie 'n meganisme soortgelyk aan
-p
inbash
nie.Die gedrag rakende gebruiker ID's word nie eksplisiet genoem nie, behalwe onder die
-i
opsie, wat die bewaring vaneuid
enruid
gelykheid beklemtoon.Bykomende inligting is beskikbaar op die
sh
man bladsy.
Hierdie meganismes, wat in hul werking uniek is, bied 'n veelsydige reeks opsies vir die uitvoering en oorgang tussen programme, met spesifieke nuanses in hoe gebruiker ID's bestuur en bewaar word.
Toetsing van Gebruiker ID Gedrag in Uitvoerings
Voorbeelde geneem van https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail, kyk dit vir verdere inligting
Geval 1: Gebruik setuid
met system
setuid
met system
Doel: Verstaan die effek van setuid
in kombinasie met system
en bash
as sh
.
C Kode:
Kompilering en Toestemmings:
Analise:
ruid
eneuid
begin as 99 (nobody) en 1000 (frank) onderskeidelik.setuid
stel albei op 1000.system
voer/bin/bash -c id
uit as gevolg van die symlink van sh na bash.bash
, sonder-p
, paseuid
aan omruid
te ooreenstem, wat daartoe lei dat albei 99 (nobody) is.
Geval 2: Gebruik setreuid met system
C Kode:
Kompilering en Toestemmings:
Uitvoering en Resultaat:
Analise:
setreuid
stel beide ruid en euid op 1000 in.system
roep bash aan, wat die gebruikers-ID's behou weens hul gelykheid, wat effektief as frank werk.
Geval 3: Gebruik van setuid met execve
Doel: Om die interaksie tussen setuid en execve te verken.
Uitvoering en Resultaat:
Analise:
ruid
bly 99, maar euid is op 1000 gestel, in ooreenstemming met setuid se effek.
C Kode Voorbeeld 2 (Bash Aanroep):
Uitvoering en Resultaat:
Analise:
Alhoewel
euid
op 1000 gestel is deursetuid
, stelbash
euid terug naruid
(99) weens die afwesigheid van-p
.
C Kode Voorbeeld 3 (Gebruik bash -p):
Uitvoering en Resultaat:
Verwysings
Last updated