
Exploit de prueba de concepto para CVE-2025-9074 - exposición no autenticada de la API de Docker que permite la creación arbitraria de contenedores y el acceso al sistema de archivos del host.
Este repositorio proporciona un exploit de Prueba de Concepto (PoC) para CVE-2025-9074, que implica la exposición no autenticada de la API de Docker Engine en el puerto TCP 2375.
Un atacante que pueda acceder a esta API expuesta puede:
Este PoC se publica únicamente con fines educativos y de pruebas de seguridad autorizadas.
La explotación no autorizada de sistemas es ilegal y poco ética.
Use este PoC únicamente en entornos de los que sea propietario o para los que tenga permiso explícito de prueba.
2375requestsInstala las dependencias:
pip install requests
Si estás probando este PoC en tu máquina local, asegúrate de que la API de Docker esté expuesta a través de TCP sin TLS. En Docker Desktop, sigue estos pasos:
⚠️ Advertencia: Esta opción desactiva la autenticación en la API de Docker.
Cualquier atacante local o remoto que pueda alcanzar localhost:2375 puede controlar tu daemon de Docker.
Habilita esta opción únicamente en entornos de prueba aislados: nunca en producción.
Una vez habilitada, puedes verificarlo con:
curl http://127.0.0.1:2375/info
Si la API responde con JSON que contiene "ServerVersion", el daemon está expuesto correctamente.
# Clone this repository
git clone https://github.com/<your-username>/CVE-2025-9074-POC.git
cd CVE-2025-9074-POC
# Run the PoC
python3 poc_cve_2025_9074.py <target_ip>:2375
Si no se proporciona un objetivo, el script solicitará entrada y usará 127.0.0.1:2375 por defecto.
Comprobar la disponibilidad de la API
Confirma si la API de Docker responde a /info.
Descargar la imagen alpine
Garantiza que la imagen base requerida esté disponible.
Preparar la carga útil del contenedor malicioso
Crea un contenedor con el sistema de archivos del host montado con bind en /mnt.
Crear el contenedor Envía una solicitud de creación de contenedor.
Iniciar el contenedor El contenedor se inicia, proporcionando acceso al sistema de archivos del host.
Post-explotación Ejemplo:
docker exec -it <container_id> sh
ls /mnt
Expose daemon on tcp://localhost:2375 without TLS en Docker Desktop después de las pruebas.El script del PoC fue co-desarrollado con Gemini AI durante la investigación.
Este PoC se publica bajo la Licencia MIT.