# `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
```