
CVE-2025-9074에 대한 개념 증명 익스플로잇으로, 원시 HTTP 요청을 통해 Docker Desktop API 이스케이프를 가능하게 합니다. curl, dd, awk만을 사용하여 컨테이너 내부에 에뮬레이트된 대화형 셸을 제공합니다.
가벼우며 의존성이 없는 bash 스크립트로, curl, dd, od, awk만을 사용하여 Docker 컨테이너 내부에서 에뮬레이트된 대화형 셸을 제공합니다. Python, jq, 편집기가 필요하지 않습니다.
원시 셸 액세스만 가능하고 Docker Engine API를 통해 Docker 컨테이너 내에서 명령을 실행해야 하는 환경을 위해 제작되었습니다.
Docker CLI를 사용하는 대신, 이 스크립트는 HTTP를 통해 Docker Engine REST API와 직접 통신합니다 (Docker Desktop / WSL2 환경에서는 일반적으로 http://192.168.65.7:2375에 노출됩니다).
스크립트는:
C:\ 드라이브가 마운트된 Alpine Linux 컨테이너를 생성하고 시작합니다.dd + od를 사용하여 Docker의 출력을 파싱합니다 — Python이 필요 없습니다.Docker는 모든 exec 출력을 바이너리 프레이밍 형식으로 래핑합니다:
[1 byte: stream type] [3 bytes: padding] [4 bytes: payload size (big-endian)] [payload...]
이 스크립트는 표준 Unix 도구만을 사용하여 프레임별로 디코딩합니다.
bashcurldd, od, awk, grep, cut — 모든 표준 Unix 도구http://192.168.65.7:2375에서 접근 가능한 Docker Engine API (WSL2의 Docker Desktop)jq, Python, nano, 편집기 불필요.git clone https://github.com/yourusername/docker-shell.git
cd docker-shell
chmod +x docker_shell.sh
bash docker_shell.sh
================================================
Docker 에뮬레이트 셸 [target: alpine_escape]
명령어: start | status | run <cmd> | exit
================================================
docker> start
docker> status
docker> run ls /mnt
docker> run ls /mnt/Users
docker> run cat /etc/os-release
docker> run id
docker> exit
| Command | Description |
|---|---|
start | 필요한 경우 alpine_escape 컨테이너를 생성하고 시작합니다. |
status | 컨테이너 ID와 현재 상태를 표시합니다. |
run <cmd> | 컨테이너 내에서 모든 셸 명령을 실행합니다. |
exit / quit | 에뮬레이트 셸을 종료합니다. |
컨테이너는 Windows C:\ 드라이브를 (WSL2를 통해) /mnt에 마운트합니다:
| Windows 경로 | 컨테이너 내부 |
|---|---|
C:\ | /mnt |
C:\Users | /mnt/Users |
C:\Program Files | /mnt/Program Files |
C:\Windows\System32 | /mnt/Windows/System32 |
run은 별도의 exec 인스턴스입니다 — 명령 간에 상태가 유지되지 않습니다. 하나의 호출에서 명령을 연결하려면 run cd /some/dir && ls를 사용하세요.alpine_escape)으로 지정하므로, 실수로 잘못된 컨테이너에 exec하지 않습니다.dd를 사용하여 프레임별로 바이너리 파일 /tmp/docker_out.bin에서 직접 파싱됩니다.환경에 맞게 스크립트 상단의 다음 변수들을 편집하세요:
DOCKER="http://192.168.65.7:2375" # Docker Engine API address
CONTAINER="alpine_escape" # Container name
AGPLv3