<aside> π‘
μΌλ°μ μΌλ‘ νμΌ λ° λλ ν 리μ κΆνμ νκΈ°ν λ 3μ리 μ«μλ‘ νννλ€.(ex : 777, 755 λ±)
</aside>
SUIDμ SGID, sticky bitλ κΈ°μ‘΄ νΌλ―Έμ (rwx)μμ μ€ν λ° μμ κΆνμ 보μνλ μμμ΄λ€. SUIDμ SGIDλ μ€νλ λ μ€νμμ IDλ‘ μ€νλλ κ²μ΄ μλλΌ μμ μλ μμ κ·Έλ£Ήμ IDλ‘ μ€νλκ²… sticky bitλ νμΌμ λν΄μ νΌλ―Έμ κ³Ό κ΄κ³μμ΄ μμ μλ§ μμ κ°λ₯νκ² ν λ λλ ν°λ¦¬μ other κΆνμ μ ννλ€.
μ΄λ¬ν κΆνμ 체κ³κ° λ§λ€μ΄μ§ μ΄μ λ, νΉμ κΆνμ μ΄μ© μ λ€λ₯Έ κ³μ μμ μ½κΈ°, μ°κΈ°, μ€ν κΆνμ μ€ μ μμΌλ©°,
λ€λ₯Έ κ³μ (A)μμ λ§λ νμΌμ λ΄ κ³μ (B)μμ μ€ννλ λμ Aμ κΆνμ μ»μ΄ ν΄λΉ νμΌμ μ½κ±°λ μ°κ±°λ μ€ννλ κ²μ΄ κ°λ₯ν΄μ§λ€. (SetUIDμ SetGIDμ ν΄λΉνλ λ΄μ©μ΄λ€.)
νΉμ κΆνμλ SUID, SGID, Sticky bitκ° μλ€.
RUID (Real User ID)
λ¨μν μ μ λͺ μ΄ μλλΌ “μ΄κΈ° λ‘κ·ΈμΈν μ¬μ©μμ ID”μ.
μ΄λ μμ€ν μ΄ μ¬μ©μμ μ€μ μ μμ μΆμ νκ³ , μ΄λ€ μ¬μ©μκ° μ΄λ€ μμ μ μννλμ§ λ‘κ·Έλ₯Ό λ¨κΈΈ μ μλλ‘ νκΈ° μν¨μ.
μμ λ³κ²½ μμ Malloryμ μν κΆν νμ·¨ λ° μμ νμ μ μ¨κΈ°λ λ° μ μ©λ μ μμ.
μμΈμ μΌλ‘, setuid(SUID)λ₯Ό ν΅ν μμ€ν νΈμΆκ³Ό suid flagκ° μ€μ λ μ€ννμΌμ μ€νν λ RUIDκ° νμΌ μμ μμ UIDλ‘ λ³κ²½λ μ μμ.
su - μ¦, su --loginμ μ νλ κ³μ μ νκ²½ λ³μμ μ΄κΈ° μ€μ κΉμ§λ λΆλ¬μ€μ§λ§ μ¬μ ν RUIDλ λ³κ²½λμ§ μμ.
νλ‘μΈμ€λ₯Ό μ€νμν¨ μ€μ μ¬μ©μμ IDλ‘ userκ° μμ€ν μ λ‘κ·ΈμΈν λ ν λΉ. λλΆλΆμ λ³κ²½λμ§ μκ³ μ μ§λ¨. μ¦, userκ° processλ₯Ό μ€ννκ±°λ ν μμ μ μνν΄λ RUIDλ μ μ§.
<aside> π‘
suμ su -μ μ°¨μ΄
suλ λ¨μν μ¬μ©μ μ νμ μν.
κΈ°μ‘΄ μ¬μ©μμ νκ²½ λ³μμ κ²½λ‘(PATH)κ° κ·Έλλ‘ μ μ§λ¨.
μ¦, EUIDλ§ λ°λκ³ κΈ°μ‘΄ νκ²½μ μ μ§λ¨.
su -λ λ‘κ·ΈμΈ μ νκ²½μ μ΄κΈ°ννμ¬ μ νλ μ¬μ©μμ μ 체 νκ²½μ λ‘λν¨.
μ νλ μ¬μ©μμ νκ²½ λ³μ, μ΄κΈ°ν μ€ν¬λ¦½νΈ(~/.bashrc, ~/.bash_profile)κ° λ‘λλ¨.
μ νλ μ¬μ©μμ κΈ°λ³Έ κ²½λ‘(PATH)λ μ μ©λ¨.
μλ‘ ν΄λΉ μ¬μ©μλ‘ λ‘κ·ΈμΈν κ²κ³Ό λμΌν νκ²½μ μ 곡.
μ¬μ©μμ ν λλ ν λ¦¬λ‘ μ΄λνλ©°, μ νλ κ³μ μ κΈ°λ³Έ μ€μ μ μ¬μ©.
</aside>
SUID (Set-user-ID) νκΈ°κ°: 4000
νΉμ μ¬μ©μμ κΆνμ΄ μμ΄μΌλ§ μ€νμ ν μ μλ νμΌμ κ²½μ°, κ·Έ κΆνμ μΌμμ μΌλ‘ νμΌμ μ€ννλ μΌλ° μ¬μ©μλ€μκ² λΆμ¬νκΈ° μν΄ μ¬μ© νλ€.
νΉμν μ κ·Ό κΆνμΌλ‘, νμΌμ μ€νν λ μ€ν νμΌμ μμ μ κΆνμΌλ‘ μ€νλκ² ν¨.
λͺ ννλ, 루νΈκ° μλ μ¬μ©μλ€μ΄ μ μλμ λ£¨νΈ λ±μ λ€λ₯Έ κ³μ μ κΆνμ λΉλ €μ νλ‘κ·Έλ¨μ μ€νν νμκ° μμ λλ₯Ό λλΉνμ¬ λΆμ¬νλ κΆν μ€μ .
μλ₯Ό λ€μ΄, root κΆνμΌλ‘ μ€μ λ μ€ν νμΌμ μΌλ° μ¬μ©μκ° μ€ννλ©΄ μ΄ νλ‘μΈμ€λ rootμ EUIDλ‘ μ€νλ¨
μ΄λ₯Ό ν΅ν΄ νλ‘κ·Έλ¨μ νμ μ λμ κΆνμ κ°μ§κ³ μμ μ μνν μ μμ.
chmod u+s νΉμ 4000μ ν΅ν΄ λΆμ¬ κ°λ₯ (o+sλ μ΄μν¨.)
SGID (Set-group-ID) νκΈ°κ°: 2000
SUIDμ κ°μ΄ μ μλμ λ€λ₯Έ κ·Έλ£Ήμ κΆνμΌλ‘ νλ‘κ·Έλ¨μ μ€νν νμκ° μμ λλ₯Ό λλΉνμ¬ λΆμ¬νλ κΆν μ€μ .
chmod g+s νΉμ 2000μ ν΅ν΄ λΆμ¬κ°λ₯
SetGID μ€μ μ κ·Έλ£Ή κΆν λ΄μ μ€ν κΆν μ리μ xκ° μλ sκ° μ€κ² λ¨. (μ΄κ±΄ suidλ μ€μ§ μλ…?)
EUID (Effective User ID)
νλ‘μΈμ€κ° μμ€ν 리μμ€μ μ κ·Όν λ μ¬μ©νλ ID.
EUIDλ νΉν νμΌμ΄λ λ€λ₯Έ μμ€ν 리μμ€μ μ κ·Ό κΆνμ 체ν¬ν λ μ€μνκ² μ¬μ©λ¨. μ¦, λ€λ₯΄κ² λ§νλ©΄ νμ¬ μ¬μ©λκ³ μλ μ μ μ ID.
λ§μ½ μ΄λ€ νλ‘κ·Έλ¨μ΄ SUID λΉνΈκ° μ€μ λ μνλ‘ μ€νλλ€λ©΄, κ·Έ νλ‘κ·Έλ¨μ EUIDλ νλ‘κ·Έλ¨μ μμ μ IDλ‘ μ€μ λ¨.
μ μ§λμ§ μλ κ²½μ°λ su <μ μ λͺ >λ±μ ν΅ν΄ μ μ μ체λ₯Ό λ°κΎΌ κ²½μ°
.
Sticky Bit = 곡μ λͺ¨λ, νκΈ°κ°: 1000
곡μ ν΄λμ κ²½μ° μμ μμ μμ κ·Έλ£Ήμ΄ rootμ΄μ§λ§, λ€λ₯Έ Userλ μ½κ³ μΈ μ μλ κ²½μ°κ° μλλ°, μ΄μ λ Permissionμ΄ tλ‘ μ€μ λμ΄μκΈ° λλ¬Έμ΄λ€.
sticky bitκ° μ μ©λ λλ ν°λ¦¬μμ νμΌμ μμ±νλ©΄ ν΄λΉ νμΌμ μμ±ν μ¬λμ μμ κ° λλ©° μμ μμ root κ³μ λ§μ΄ ν΄λΉ νμΌμ λν μμ μ μμ μ λν κΆνμ κ°μ§λ€. sticky bitκ° μ μ©λ λλ ν°λ¦¬λ rootκ° μλ μΌλ° μ¬μ©μλ€μ νμΌμ μμ νκ±°λ μ΄λ¦μ λ³κ²½νμ§λ λͺ»νκ³ , νμΌμ΄λ λλ ν°λ¦¬μ μμ±μ κ°λ₯
chmod o+t, u+t νΉμ 1000 λ₯Ό μ¬μ©νμ¬ Sticky Bitμ μ€μ ν μ μλ€.
μ κ±°λ o-t / u-t νΉμ 000
μ΄λ oλ othersμ΄κ³ , uλ userμ΄λ€.
μλ―ΈμμΌλ‘λ Sticky Bitλ **λ€λ₯Έ μ¬μ©μλ€(others)**μ νμΌ μμ κΆνμ μ ννλ λ° μ¬μ©λλ―λ‘, μλ―Έμ μΌλ‘ o+tκ° λ μ ν©νλ€.
μ¦, “곡μ λλ ν 리”μ κ°μ΄ νΉμ λλ ν 리λ₯Ό λꡬλ μμ λ‘κ² μ¬μ©ν μ μκ² νκΈ° μν΄ Sticky Bitκ° μ¬μ©λ¨.
Sticky Bitκ° μ€μ λ λλ ν 리μ νμΌμ μμ±νλ©΄ ν΄λΉ νμΌμ μμ±ν μ¬λμ μμ κ° λλ©°, μ€μ§ μμ μμ rootμκ²λ§ ν΄λΉ νμΌμ λν μμ λ° λ³κ²½μ κΆνμ΄ μλ€. 곡μ λλ ν λ¦¬λ‘ μ¬μ©νκ³ μ ν λ μ°μΈλ€.
μ°Έκ³ λ‘ SetUID, SetGID, Sticky Bitλ ν΄λΉ μ리μ νΌλ―Έμ μ μ€ννΌλ―Έμ μ΄ μμ΄μΌλ§ μ μ©μ΄ λλ€.
κ°λ Ή SUID (4000)λ λ¨λ μΌλ‘ 4000λ§ μ§μ νλ©΄ μ€ν λΉνΈκ° μμΌλ―λ‘, νμΌμ΄ μ€νλμ§ μμ SUID ν¨κ³Όκ° λνλμ§ μκΈ°μ,
보ν΅μ 4000κ³Ό μ¬μ©μ μ€ν λΉνΈ(μ: 0700 λλ 0100 λ±)λ₯Ό ν©μ³ 4700, 4100 λ±μΌλ‘ μ€μ νλ€.
λ€λ₯΄κ² λ§νλ©΄ 4λ 100, 300, 700μ²λΌ μ¬μ©νλ νΈμ΄λ©°
2λ 010, 030, 070, 1μ 001, 003, 007μ²λΌ μ¬μ©νλ νΈμ΄λ€.
μ΄μ°¨νΌ λ€λ₯Έ μ리λ μ€μ ν΄λ΄€μ μλ―Έκ° μκΈ° λλ¬Έμ΄λ€.
νΉμ κΆνμ μΌλ° νΌλ―Έμ κ³Ό κ²°ν©νμ¬ μ¬μ©λλ©°, λ³΄ν΅ μμ μ΄ μ μ©λ μ¬μ©μ/κ·Έλ£Ή/κΈ°νμ λ§λ μ€ν νΌλ―Έμ κ³Ό ν¨κ» μ€μ νλ κ²μ΄ μ¬λ°λ₯Έ μ¬μ©λ²μ΄λ€.
λ§μ½ νΉμνΌλ―Έμ μ΄ λλ¬Έμλ‘ νκΈ°λ κ²½μ° μ΄λ νΉμνΌλ―Έμ μ΄ μ€μ μ λμ΄μμ§λ§ μΌλ°νΌλ―Έμ μ리μ μ€ννΌλ―Έμ μ΄ μ€μ λμ΄μμ§ μκΈ° λλ¬Έμ΄λ€.
μ¦, 2, 4, 6κ³Ό κ°μ execute κΆν(1)μ μ μ©λμ΄μμ§ μμ κ²½μ°μ λλ¬Έμκ° νκΈ°λλ€.
- νΉμκΆν νμΌ κ²μνκΈ°
$ find [κ²μν λλ ν 리 κ²½λ‘] -perm [μ κ·ΌκΆνκ°] $ find [κ²μν λλ ν 리 κ²½λ‘] -perm [μ κ·ΌκΆνκ°] -ls- lsλ₯Ό μ΅μ μΌλ‘ λΆμ¬μ£Όλ©΄ κ²μ κ²°κ³Όλ₯Ό lsλͺ λ Ήμ ννλ‘ μΆλ ₯ν΄μ€λ€.
- perm μ΅μ μμλ -κ°κ³Ό +κ°μ μ λ ₯ν μ μλ€.
- -perm modemodeλ‘ λͺ μν κΆνκ³Ό μ νν μΌμΉνλ νμΌμ κ²μ νλ€.
- -perm 6000μΌλ‘ κ²μ μ μ΄ λ modeλ₯Ό bitλ‘ νννλ©΄ 110/000/000/000 μ΄ λλ€. μΌμͺ½ bitλΆν° μΈλ±μ±μ ν΄μ 0λ²μ§Έ λΉνΈ, 1λ²μ§Έ λΉνΈ, ... , 11λ²μ§Έ λΉνΈλ‘ νκΈ°νλ€κ³ νμ. μ΄ μ΅μ μΌλ‘ νμΌμ΄ κ²μλκΈ° μν΄μλ, 1) νμΌ κΆνμ 0λ²μ§Έ ~ 11λ²μ§Έ λΉνΈκ° modeμ μ νν μΌμΉν΄μΌ νλ€.
- File's permission bits are exactly mode (octal or symbolic).
- -perm -modemodeλ‘ λͺ
μν κΆνμ λͺ¨λ ν¬ν¨νλ νμΌμ κ²μ νλ€.
-perm -6000μΌλ‘ κ²μ μ μ΄ λ modeλ₯Ό bitλ‘ νννλ©΄ 110/000/000/000 μ΄ λλ€. μΌμͺ½ bitλΆν° μΈλ±μ±μ ν΄μ 0λ²μ§Έ λΉνΈ, 1λ²μ§Έ λΉνΈ, ... , 11λ²μ§Έ λΉνΈλ‘ νκΈ°νλ€κ³ νμ. μ΄ μ΅μ μΌλ‘ νμΌμ΄ κ²μλκΈ° μν΄μλ, 1) νμΌ κΆνμ 0λ²μ§Έ bitμ 1λ²μ§Έ λΉνΈκ° λͺ¨λ 1μ΄μ΄μΌ νλ€. (and) 2) λλ¨Έμ§ μμΉμ bitλ€μ μ΄λ€ κ°μ κ°μ§λ κ²μ κ²°κ³Όμ ν¬ν¨ λλ€. - κ²μλλ νμΌμ modeλ‘ λͺ μν κΆνμ μ΅μν λͺ¨λ κ°μ§κ³ μμΌλ©°, κ·Έ μΈμλ μΆκ°μ μΈ κΆνμ κ°μ§κ³ μμ μ μλ€.
- All of the permission bits mode are set for the file.
- -perm /modemodeλ‘ λͺ
μν κΆνμ νλ μ΄μ ν¬ν¨νλ νμΌμ κ²μ νλ€.
-perm /6000μΌλ‘ κ²μ μ μ΄ λ modeλ₯Ό bitλ‘ νννλ©΄ 110/000/000/000 μ΄ λλ€. μΌμͺ½ bitλΆν° μΈλ±μ±μ ν΄μ 0λ²μ§Έ λΉνΈ, 1λ²μ§Έ λΉνΈ, ... , 11λ²μ§Έ λΉνΈλ‘ νκΈ°νλ€κ³ νμ. μ΄ μ΅μ μΌλ‘ νμΌμ΄ κ²μλκΈ° μν΄μλ, 1) νμΌ κΆνμ 0λ²μ§Έ bit λλ 1λ²μ§Έ bitκ° 1μ΄μ΄μΌ νλ€. (or) 2) λλ¨Έμ§ μμΉμ bitλ€μ μ΄λ€ κ°μ κ°μ§λ κ²μ κ²°κ³Όμ ν¬ν¨ λλ€. - κ²μλλ νμΌμ modeλ‘ λͺ μν κΆνμ μ΅μν 1κ°λκ°μ§κ³ μμΌλ©°, κ·Έ μΈμλ μΆκ°μ μΈ κΆνμ κ°μ§κ³ μμ μ μλ€.
- Any of the permission bits mode are set for the file.
- +μ μ λ ₯νλ©΄ μ λ ₯ν κΆνλ§ μ€μ λ νμΌλ§ κ²μνλ€.
- find λͺ λ Ήμ μ΄μ©νμ¬ νΉμκΆνμ΄ μ€μ λ νμΌκ³Ό λλ ν 리λ₯Ό κ²μν μ μλ€.
- κΆν λΆμ¬ (chmod)
8μ§μ κΆν νκΈ°λ λ€μκ³Ό κ°μ ꡬ쑰λ₯Ό κ°μ§λλ€:
- νΉμ κΆν λΉνΈ (첫 λ²μ§Έ μ리)
- 4xxx: suid (Set User ID)
- 2xxx: sgid (Set Group ID)
- 1xxx: Sticky Bit
- κΈ°λ³Έ κΆν λΉνΈ (λλ¨Έμ§ μΈ μ리)
- xxxλ μμ μ, κ·Έλ£Ή, κΈ°ν μ¬μ©μ(others)μ μ½κΈ°, μ°κΈ°, μ€ν κΆνμ λνλ λλ€.
- κ° μ리λ 3λΉνΈλ‘ ꡬμ±λλ©°, κΆνμ λ€μκ³Ό κ°μ΄ ννλ©λλ€:
- 4: μ½κΈ° (read, r)
- 2: μ°κΈ° (write, w)
- 1: μ€ν (execute, x)
- 0: κΆν μμ
7 (4+2+1): μ½κΈ°, μ°κΈ°, μ€ν (rwx)
6 (4+2): μ½κΈ°, μ°κΈ° (rw-)
5 (4+1): μ½κΈ°, μ€ν (r-x)
4 (4): μ½κΈ° (r--)
3 (2+1): μ°κΈ°, μ€ν (-wx)
2 (2): μ°κΈ° (-w-)
1 (1): μ€ν (--x)
0: μμ (---)
<aside> π‘
suid μ€μ μμ
1. chmod 4755 filename
- 4: suid μ€μ
- 755:
- 7 (rwx): μμ μ κΆν (μ½κΈ°, μ°κΈ°, μ€ν)
- 5 (r-x): κ·Έλ£Ή κΆν (μ½κΈ°, μ€ν)
- 5 (r-x): κΈ°ν μ¬μ©μ κΆν (μ½κΈ°, μ€ν)
- κ²°κ³Ό: rwsr-xr-x
- s: suidκ° μ€μ λμ΄ μ€ν μ νμΌ μμ μμ κΆνμΌλ‘ μ€ν
2. chmod 4711 filename
- 4: suid μ€μ
- 711:
- 7 (rwx): μμ μ κΆν
- 1 (-x): κ·Έλ£Ή κΆν (μ€νλ§)
- 1 (-x): κΈ°ν μ¬μ©μ κΆν (μ€νλ§)
- κ²°κ³Ό: rws--x--x
- μ΄ μ€μ μ νμΌμ μ€νν μλ§ μκ² νλ©°, μ€ν μ νμΌ μμ μμ κΆνμ μ¬μ©
3. chmod 4000 filename
- 4: suid μ€μ
- 000:
- 0 (--): μμ μ κΆν μμ
- 0 (--): κ·Έλ£Ή κΆν μμ
- 0 (--): κΈ°ν μ¬μ©μ κΆν μμ
- κ²°κ³Ό: -S------
- S: μ€ν κΆνμ΄ μλ μνμμ suidκ° μ€μ λ¨ (λΉμ μμ μΈ μ€μ )
νΉμ κΆν λΉνΈ μ‘°ν©
- 4755: rwsr-xr-x (suid + rwxr-xr-x)
- 2755: rwxr-sr-x (sgid + rwxr-xr-x)
- 1755: rwxr-xr-t (Sticky Bit + rwxr-xr-x)
- 6755: rwsr-sr-x (suid + sgid + rwxr-xr-x)
- 5755: rwsr-xr-t (suid + Sticky Bit + rwxr-xr-x)
- 7755: rwsr-sr-t (suid + sgid + Sticky Bit + rwxr-xr-x) </aside>
'\ > L' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| ASLRμ λΉνμ±ν νλ λ² (0) | 2025.03.17 |
|---|