
Эксплойт proof-of-concept для CVE-2025-9074, демонстрирующий запись файлов из контейнера на хост через открытый API Docker Engine в Windows. Только для авторизованного тестирования и образовательных целей.
Автор: w01f
Статус: Proof-of-Concept (только для обучения / авторизованного тестирования)
Этот проект демонстрирует PoC для CVE-2025-9074 — ошибки конфигурации/небезопасной экспозиции в определённых версиях Docker Desktop для Windows, при которой HTTP API Docker Engine по адресу http://192.168.65.7:2375 доступен из контейнеров (а иногда и через SSRF), что позволяет атакующему создать контейнер с bind mount к диску Windows-хоста и записывать файлы на хост.
⚠️ Используйте только в контролируемой лаборатории или с явного письменного разрешения. Неправомерное использование может нарушать законы и политики.
http://192.168.65.7:2375)C:\ (как /mnt/host/c внутри Linux VM) в /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) из контейнера, в котором вы запускаете PoC# 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 (Windows C:\ как видно из Linux VM)/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:\ процессами, относящимися к контексту Docker Linux VM.192.168.65.7:2375 (HTTP) подозрительны./ping не возвращает OK / соединение отклонено: API движка недоступен из вашего контейнера; возможно, на хосте установлен патч или API не открыт.--host-path корректно сопоставляется с Windows C:\ из Linux VM. В некоторых окружениях это различается.alpine или переключитесь на busybox с помощью --image busybox.Этот PoC предоставляется только для образовательных целей и авторизованного тестирования. Запуск против систем без явного письменного разрешения незаконен и неэтичен. Автор и участники не несут ответственности за неправомерное использование или ущерб.
MIT
Автор: w01f