euid, ruid, suid
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)
Deepen your expertise in Mobile Security with 8kSec Academy. Master iOS and Android security through our self-paced courses and get certified:
ruid
: Kitambulisho halisi cha mtumiaji kinamaanisha mtumiaji aliyeanzisha mchakato.
euid
: Inajulikana kama kitambulisho cha mtumiaji kinachofanya kazi, kinawakilisha utambulisho wa mtumiaji unaotumiwa na mfumo kubaini ruhusa za mchakato. Kwa ujumla, euid
inafanana na ruid
, isipokuwa katika matukio kama utekelezaji wa binary ya SetUID, ambapo euid
inachukua utambulisho wa mmiliki wa faili, hivyo kutoa ruhusa maalum za uendeshaji.
suid
: Huu ni kitambulisho kilichohifadhiwa cha mtumiaji ambacho ni muhimu wakati mchakato wa haki za juu (kwa kawaida ukifanya kazi kama root) unahitaji kuachana kwa muda na haki zake ili kutekeleza kazi fulani, kisha baadaye kurejesha hadhi yake ya juu ya awali.
Mchakato usiokuwa chini ya root unaweza kubadilisha euid
yake ili ifanane na ruid
, euid
, au suid
ya sasa.
setuid
: Kinyume na dhana za awali, setuid
inabadilisha hasa euid
badala ya ruid
. Kwa mchakato wenye haki, inalinganisha ruid
, euid
, na suid
na mtumiaji aliyeainishwa, mara nyingi root, kwa ufanisi ikimarisha vitambulisho hivi kutokana na suid
inayoshinda. Maelezo ya kina yanaweza kupatikana kwenye setuid man page.
setreuid
na setresuid
: Hizi ni kazi zinazoruhusu marekebisho ya kina ya ruid
, euid
, na suid
. Hata hivyo, uwezo wao unategemea kiwango cha haki za mchakato. Kwa michakato isiyo ya root, marekebisho yanakabiliwa na thamani za sasa za ruid
, euid
, na suid
. Kinyume chake, michakato ya root au zile zenye uwezo wa CAP_SETUID
zinaweza kupewa thamani zisizo za kawaida kwa vitambulisho hivi. Taarifa zaidi zinaweza kupatikana kwenye setresuid man page na setreuid man page.
Hizi kazi zimeundwa si kama mekanismu ya usalama bali kusaidia mtiririko wa uendeshaji unaokusudiwa, kama vile wakati programu inachukua utambulisho wa mtumiaji mwingine kwa kubadilisha kitambulisho chake cha mtumiaji kinachofanya kazi.
Kwa kuzingatia, ingawa setuid
inaweza kuwa chaguo la kawaida kwa ajili ya kupandisha haki hadi root (kwa kuwa inalinganisha vitambulisho vyote na root), kutofautisha kati ya hizi kazi ni muhimu kwa kuelewa na kudhibiti tabia za kitambulisho cha mtumiaji katika hali tofauti.
execve
System CallFunctionality: execve
inaanzisha programu, inayoamuliwa na hoja ya kwanza. Inachukua hoja mbili za array, argv
kwa ajili ya hoja na envp
kwa ajili ya mazingira.
Behavior: Inahifadhi nafasi ya kumbukumbu ya mwito lakini inasasisha stack, heap, na sehemu za data. Kanuni ya programu inabadilishwa na programu mpya.
User ID Preservation:
ruid
, euid
, na vitambulisho vya makundi ya ziada vinabaki bila kubadilika.
euid
inaweza kuwa na mabadiliko madogo ikiwa programu mpya ina SetUID bit iliyowekwa.
suid
inasasishwa kutoka euid
baada ya utekelezaji.
Documentation: Taarifa za kina zinaweza kupatikana kwenye execve
man page.
system
FunctionFunctionality: Kinyume na execve
, system
inaunda mchakato wa mtoto kwa kutumia fork
na kutekeleza amri ndani ya mchakato huo wa mtoto kwa kutumia execl
.
Command Execution: Inatekeleza amri kupitia sh
kwa kutumia execl("/bin/sh", "sh", "-c", command, (char *) NULL);
.
Behavior: Kwa kuwa execl
ni aina ya execve
, inafanya kazi kwa njia sawa lakini katika muktadha wa mchakato mpya wa mtoto.
Documentation: Maelezo zaidi yanaweza kupatikana kwenye system
man page.
bash
and sh
with SUIDbash
:
Ina chaguo la -p
linaloathiri jinsi euid
na ruid
zinavyoshughulikiwa.
Bila -p
, bash
inabadilisha euid
kuwa ruid
ikiwa awali zinatofautiana.
Kwa -p
, euid
ya awali inahifadhiwa.
Maelezo zaidi yanaweza kupatikana kwenye bash
man page.
sh
:
Haina mekanismu inayofanana na -p
katika bash
.
Tabia inayohusiana na vitambulisho vya mtumiaji haijatajwa wazi, isipokuwa chini ya chaguo la -i
, ikisisitiza uhifadhi wa usawa wa euid
na ruid
.
Taarifa za ziada zinapatikana kwenye sh
man page.
Mekanismu hizi, tofauti katika uendeshaji wao, zinatoa anuwai ya chaguzi za kutekeleza na kuhamasisha kati ya programu, huku zikiwa na nuances maalum katika jinsi vitambulisho vya mtumiaji vinavyoshughulikiwa na kuhifadhiwa.
Examples taken from https://0xdf.gitlab.io/2022/05/31/setuid-rabbithole.html#testing-on-jail, check it for further information
setuid
with system
Objective: Understanding the effect of setuid
in combination with system
and bash
as sh
.
C Code:
Uundaji na Ruhusa:
Analysis:
ruid
na euid
huanza kama 99 (nobody) na 1000 (frank) mtawalia.
setuid
inawalinganisha wote kuwa 1000.
system
inatekeleza /bin/bash -c id
kutokana na symlink kutoka sh hadi bash.
bash
, bila -p
, inarekebisha euid
ili ikidhi ruid
, na kusababisha wote kuwa 99 (nobody).
C Code:
Uundaji na Ruhusa:
Utekelezaji na Matokeo:
Analysis:
setreuid
inafanya ruid na euid kuwa 1000.
system
inaita bash, ambayo inashikilia vitambulisho vya mtumiaji kutokana na usawa wao, ikifanya kazi kama frank.
Objective: Kuchunguza mwingiliano kati ya setuid na execve.
Utekelezaji na Matokeo:
Analysis:
ruid
inabaki 99, lakini euid imewekwa kwa 1000, kulingana na athari ya setuid.
C Code Example 2 (Calling Bash):
Utekelezaji na Matokeo:
Analysis:
Ingawa euid
imewekwa kuwa 1000 na setuid
, bash
inarejesha euid kuwa ruid
(99) kutokana na ukosefu wa -p
.
C Code Example 3 (Using bash -p):
Utekelezaji na Matokeo:
Deepen your expertise in Mobile Security with 8kSec Academy. Master iOS and Android security through our self-paced courses and get certified:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)