Abusing Docker Socket for Privilege Escalation
Last updated
Last updated
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE) GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE)
๋๋๋ก docker ์์ผ์ ์ ๊ทผํ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ถํ์ ์์น์ํค๊ณ ์ ํ ์ ์์ต๋๋ค. ์ผ๋ถ ์์ ์ ๋งค์ฐ ์์ฌ์ค๋ฌ์ธ ์ ์์ผ๋ฏ๋ก ํผํ๊ณ ์ถ์ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์์ ๊ถํ ์์น์ ์ ์ฉํ ์ ์๋ ๋ค์ํ ํ๋๊ทธ๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค:
๋ฃจํธ๋ก ์คํ๋๋ ์ปจํ ์ด๋์์ ํ์ผ ์์คํ ์ ๋ค์ํ ๋ถ๋ถ์ ๋ง์ดํธํ๊ณ ์ ๊ทผํ ์ ์์ต๋๋ค. ์ปจํ ์ด๋ ๋ด๋ถ์์ ๊ถํ์ ์์น์ํค๊ธฐ ์ํด ๋ง์ดํธ๋ฅผ ์ ์ฉํ ์๋ ์์ต๋๋ค.
-v /:/host
-> ํธ์คํธ ํ์ผ ์์คํ
์ ์ปจํ
์ด๋์ ๋ง์ดํธํ์ฌ ํธ์คํธ ํ์ผ ์์คํ
์ ์ฝ์ ์ ์์ต๋๋ค.
ํธ์คํธ์ ์๋ ๊ฒ์ฒ๋ผ ๋๋ผ๊ณ ์ถ์ง๋ง ์ปจํ ์ด๋์ ์๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๋ฐฉ์ด ๋ฉ์ปค๋์ฆ์ ๋นํ์ฑํํ ์ ์์ต๋๋ค:
--privileged
--cap-add=ALL
--security-opt apparmor=unconfined
--security-opt seccomp=unconfined
-security-opt label:disable
--pid=host
--userns=host
--uts=host
--cgroupns=host
**--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined
** -> ์ด์ ๋ฐฉ๋ฒ๊ณผ ์ ์ฌํ์ง๋ง ์ฌ๊ธฐ์๋ ๋๋ฐ์ด์ค ๋์คํฌ๋ฅผ ๋ง์ดํธํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ปจํ
์ด๋ ๋ด๋ถ์์ mount /dev/sda1 /mnt
๋ฅผ ์คํํ๋ฉด /mnt์์ ํธ์คํธ ํ์ผ ์์คํ
์ ์ ๊ทผํ ์ ์์ต๋๋ค.
ํธ์คํธ์์ fdisk -l
์ ์คํํ์ฌ ๋ง์ดํธํ </dev/sda1>
๋๋ฐ์ด์ค๋ฅผ ์ฐพ์ต๋๋ค.
-v /tmp:/host
-> ์ด๋ค ์ด์ ๋ก ํธ์คํธ์์ ์ผ๋ถ ๋๋ ํ ๋ฆฌ๋ง ๋ง์ดํธํ ์ ์๊ณ ํธ์คํธ ๋ด๋ถ์ ์ ๊ทผํ ์ ์๋ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ง์ดํธํ๊ณ ๋ง์ดํธ๋ ๋๋ ํ ๋ฆฌ์ suid๊ฐ ์๋ **/bin/bash
**๋ฅผ ์์ฑํ์ฌ ํธ์คํธ์์ ์คํํ๊ณ ๋ฃจํธ๋ก ์์นํ ์ ์์ต๋๋ค.
/tmp
ํด๋๋ฅผ ๋ง์ดํธํ ์ ์์ ์๋ ์์ง๋ง ๋ค๋ฅธ ์ฐ๊ธฐ ๊ฐ๋ฅํ ํด๋๋ฅผ ๋ง์ดํธํ ์ ์์ต๋๋ค. ์ฐ๊ธฐ ๊ฐ๋ฅํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์ผ๋ ค๋ฉด: find / -writable -type d 2>/dev/null
์ ์ฌ์ฉํ์ธ์.
๋ฆฌ๋
์ค ๋จธ์ ์ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๊ฐ suid ๋นํธ๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค! suid ๋นํธ๋ฅผ ์ง์ํ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธํ๋ ค๋ฉด mount | grep -v "nosuid"
๋ฅผ ์คํํ์ธ์. ์๋ฅผ ๋ค์ด ์ผ๋ฐ์ ์ผ๋ก /dev/shm
, /run
, /proc
, /sys/fs/cgroup
, /var/lib/lxcfs
๋ suid ๋นํธ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
๋ํ /etc
๋๋ ๊ตฌ์ฑ ํ์ผ์ด ํฌํจ๋ ๋ค๋ฅธ ํด๋๋ฅผ ๋ง์ดํธํ ์ ์๋ค๋ฉด, ์ปจํ
์ด๋์์ ๋ฃจํธ๋ก ์ด๋ฅผ ๋ณ๊ฒฝํ์ฌ ํธ์คํธ์์ ์
์ฉํ๊ณ ๊ถํ์ ์์น์ํฌ ์ ์์ต๋๋ค (์: /etc/shadow
์์ ).
--privileged
-> ์ด ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ปจํ
์ด๋์ ๋ชจ๋ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ๋ฃจํธ๋ก ๊ถํ ์์นํ๊ธฐ ์ํด ํน๊ถ ์ปจํ
์ด๋์์ ํ์ถํ๋ ๊ธฐ์ ์ ํ์ธํ์ธ์.
--cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable]
-> ๊ถํ์ ์
์ฉํ์ฌ ๊ถํ ์์นํ๊ธฐ ์ํด, ํด๋น ๊ถํ์ ์ปจํ
์ด๋์ ๋ถ์ฌํ๊ณ ์ต์คํ๋ก์์ด ์๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์๋ ๋ค๋ฅธ ๋ณดํธ ๋ฐฉ๋ฒ์ ๋นํ์ฑํํ์ธ์.
์ด ํ์ด์ง์์๋ docker ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ถํ์ ์์น์ํค๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ ผ์ํ์ต๋๋ค. curl ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค:
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training AWS Red Team Expert (ARTE) GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ: HackTricks Training GCP Red Team Expert (GRTE)