
Prueba de concepto de explotación para CVE-2025-9074 que demuestra la escritura de archivos del contenedor al anfitrión a través de la API expuesta de Docker Engine en Windows. Solo para pruebas autorizadas y fines educativos.
Autor: w01f
Estado: Prueba de Concepto (solo con fines educativos / pruebas autorizadas)
Este proyecto demuestra una PoC para CVE-2025-9074, una mala configuración/exposición en ciertas versiones de Docker Desktop para Windows donde la API HTTP del Motor Docker en http://192.168.65.7:2375 es alcanzable desde contenedores (y a veces mediante SSRF), permitiendo a un atacante crear un contenedor con un montaje directo (bind mount) a la unidad del host Windows y escribir archivos en el host.
⚠️ Usar solo en un laboratorio controlado o con permiso explícito por escrito. El mal uso puede violar leyes y políticas.
http://192.168.65.7:2375)C:\ (como /mnt/host/c dentro de la VM Linux) a /host_root dentro del contenedorC:\pwn.txt en el hostSi el objetivo es vulnerable, verá aparecer el archivo en el host Windows.
192.168.65.7:2375 (HTTP, sin TLS).✅ Si
GET http://192.168.65.7:2375/_pingdevuelveOKdesde dentro de un contenedor, es probable que existan las condiciones para la PoC.
.
├─ cve_2025_9074_poc.py # PoC en Python (basada en requests)
└─ README.md # Este archivo
pip install requestshttp://192.168.65.7:2375) desde el contenedor donde se ejecuta la PoC# 1) Instalar dependencia
pip install --no-input requests
# 2) Ejecutar la PoC
python3 cve_2025_9074_poc.py
# Opcional: personalizar nombre de archivo o imagen
# python3 cve_2025_9074_poc.py --outfile test.txt --image busybox
Comportamiento por defecto:
http://192.168.65.7:2375/mnt/host/c (Windows C:\ visto desde la VM Linux)/host_rootC:\pwn.txt--host IP del motor (por defecto: 192.168.65.7)
--port Puerto del motor (por defecto: 2375)
--image Imagen del contenedor (por defecto: alpine)
--host-path Ruta en el host/VM a montar (por defecto: /mnt/host/c)
--mount-path Ruta dentro del contenedor (por defecto: /host_root)
--outfile Nombre del archivo a crear en C:\ del host (por defecto: pwn.txt)
En un sistema vulnerable, después de ejecutar la PoC debería encontrar:
C:\pwn.txt
que contiene el texto pwned_by_CVE_2025_9074.
La PoC utiliza un contenedor de corta duración. Si desea ser minucioso:
# Desde un shell privilegiado con acceso a docker CLI:
docker ps -a --format '{{.ID}}\t{{.Image}}\t{{.Command}}'
# Eliminar por ID de contenedor si queda alguno:
docker rm -f <ID_CONTENEDOR>
# Eliminar el archivo de prueba en el host:
del C:\pwn.txt
HostConfig.Binds incluya rutas como /mnt/host/c u otros montajes de unidades del host.C:\ provenientes de procesos atribuibles al contexto de la VM Linux de Docker.192.168.65.7:2375 (HTTP) es sospechosa./ping no OK / conexión rechazada: La API del motor no es alcanzable desde su contenedor; el host podría estar parcheado o no expuesto.--host-path se mapee correctamente a la unidad C:\ de Windows desde la VM Linux. Algunos entornos difieren.alpine o cambie a busybox con --image busybox.Esta PoC se proporciona con fines educativos y de pruebas autorizadas únicamente. Ejecutarla contra sistemas sin autorización explícita por escrito es ilegal y poco ético. El autor y los contribuyentes no son responsables por mal uso o daños.
MIT
Autor: w01f