# `id` 명령어에 `docker`가 있다면? - `docker` 그룹은 docker socket 파일 (`/var/run/docker.sock`)에 접근할 수 있는 권한이 있는 사용자 그룹을 의미한다. - **`docker` 그룹에 속하면, 해당 사용자는 루트 권한 없이도 docker 데몬을 제어할 수 있다.** - 즉, 도커 컨테이너를 마음대로 생성/삭제할 수 있고, 심지어 호스트 OS의 권한을 탈취할 수 있는 매우 위험한 권한. # docker 그룹 = 잠재적 루트 권한 아래 커맨드로 간단히 호스트 OS의 쉘을 탈취할 수 있다. ```bash docker run -v /:/mnt --rm -it alpine chroot /mnt sh ``` - `docker run`: docker 컨테이너를 새로 생성하고 실행하는 기본 명령어 - `-v /:/mnt`: 호스트 OS의 전체 파일 시스템을 컨테이너에 마운트 - `/` : 호스트 OS의 루트 디렉토리 (모든 파일) - `:/mnt`: 이 루트 디렉토리를 컨테이너 안의 `/mnt` 경로에 연결하라는 뜻 - 즉, 호스트의 모든 파일을 컨테이너 안에서 `/mnt` 경로로 그대로 볼 수 있게 만드는 것 - `--rm`: 컨테이너를 종료하면 자동으로 삭제하라는 옵션. 흔적을 남기지 않으려는 공격 시도. - `--it` - `-i`: interactive mode - `-t`: pseudo-TTY 할당 (터미널 환경 제공) - `alpine`: 도커 이미지 종류 중 하나 - `ubuntu` 나 `busybox`도 가능. - 만약 타겟 서버가 외부 네트워크 차단 시 `docker images`에 존재하는 이미지만 사용 가능 - `chroot /mnt sh` - `chroot`: "루트 디렉토리 변경" 명령어 - `chroot /mnt`: 컨테이너 안에서 호스트 OS의 파일 시스템 (`/mnt`)을 새로운 루트 디렉토리로 사용하겠다는 뜻. - `sh`: chroot 환경에서 `/bin/sh` 쉘을 실행 ```bash $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE bash latest 495d6437fc1e 6 years ago 15.8MB $ docker run -v /:/mnt --rm -it bash chroot /mnt sh # whoami root ```