
CVE-2025-9074에 대한 개념 증명 익스플로잇으로, Windows에서 노출된 Docker Engine API를 통해 컨테이너에서 호스트로 파일을 쓰는 방법을 보여줍니다. 공인된 테스트 및 교육 목적으로만 사용하십시오.
Author: w01f
상태: 개념 증명 (교육 / 승인된 테스트 전용)
이 프로젝트는 CVE-2025-9074에 대한 PoC를 시연합니다. 이 취약점은 Docker Desktop for Windows의 특정 버전에서 Docker Engine HTTP API가 http://192.168.65.7:2375에서 컨테이너(때로는 SSRF를 통해)에서 접근 가능하여 공격자가 바인드 마운트로 Windows 호스트 드라이브에 컨테이너를 생성하고 호스트에 파일을 쓸 수 있는 설정 오류/노출입니다.
⚠️ 통제된 실험실 또는 명시적인 서면 허가를 받은 경우에만 사용하세요. 오용은 법률 및 정책을 위반할 수 있습니다.
http://192.168.65.7:2375)C:\ (Linux VM 내에서 /mnt/host/c)에서 컨테이너 내 /host_root로의 바인드 마운트가 있는 단기 컨테이너 생성C:\pwn.txt**를 생성하는 간단한 명령 실행대상이 취약한 경우 Windows 호스트에 파일이 나타나는 것을 볼 수 있습니다.
192.168.65.7:2375 (HTTP, TLS 없음)로 노출됨.✅ 컨테이너 내부에서
GET http://192.168.65.7:2375/_ping이OK를 반환하면 PoC 조건이 존재할 가능성이 높습니다.
.
├─ cve_2025_9074_poc.py # Python PoC (requests-based)
└─ README.md # This file
pip install requestshttp://192.168.65.7:2375)에 도달할 수 있는 능력# 1) Install dependency
pip install --no-input requests
# 2) Run the PoC
python3 cve_2025_9074_poc.py
# Optional: customize output filename or image
# python3 cve_2025_9074_poc.py --outfile test.txt --image busybox
기본 동작:
http://192.168.65.7:2375/mnt/host/c (Linux VM에서 보이는 Windows C:)/host_rootC:\pwn.txt--host Engine host IP (default: 192.168.65.7)
--port Engine port (default: 2375)
--image Container image (default: alpine)
--host-path Path on engine host/VM to bind (default: /mnt/host/c)
--mount-path Path inside the container (default: /host_root)
--outfile Filename to create on host C:\ (default: pwn.txt)
취약한 시스템에서 PoC 실행 후 다음을 찾을 수 있습니다:
C:\pwn.txt
텍스트 pwned_by_CVE_2025_9074가 포함되어 있습니다.
PoC는 단기 컨테이너를 사용합니다. 철저히 하고 싶다면:
# From a privileged shell with docker CLI access:
docker ps -a --format '{{.ID}}\t{{.Image}}\t{{.Command}}'
# Remove by container ID if any remain:
docker rm -f <CONTAINER_ID>
# Remove the test file on the host:
del C:\pwn.txt
HostConfig.Binds에 /mnt/host/c 또는 다른 호스트 드라이브 마운트와 같은 경로가 포함된 컨테이너 생성 이벤트를 찾으세요.C:\에 예상치 못한 파일 생성을 모니터링하세요.192.168.65.7:2375 (HTTP)로의 네트워크 텔레메트리는 의심스럽습니다./ping이 OK가 아님 / 연결 거부됨: 컨테이너에서 엔진 API에 연결할 수 없습니다. 호스트가 패치되었거나 노출되지 않았을 수 있습니다.--host-path가 Linux VM에서 Windows C:\로 올바르게 매핑되는지 확인하세요. 일부 환경은 다릅니다.alpine을 미리 가져오거나 --image busybox로 busybox로 전환하세요.이 PoC는 교육 및 승인된 테스트 전용으로 제공됩니다. 명시적인 서면 허가 없이 시스템에 대해 실행하는 것은 불법이며 비윤리적입니다. 저자와 기여자는 오용이나 손해에 대해 책임을 지지 않습니다.
MIT
Author: w01f