
Autor: w01f
Status: Prova de Conceito (somente educacional / testes autorizados)
Este projeto demonstra uma PoC para CVE-2025-9074, uma configuração incorreta/exposição em certas versões do Docker Desktop para Windows onde a API HTTP do Docker Engine em http://192.168.65.7:2375 é acessível a partir de contêineres (e às vezes via SSRF), permitindo que um atacante crie um contêiner com um bind mount para a unidade do host Windows e grave arquivos no host.
⚠️ Use somente em um laboratório controlado ou com permissão explícita por escrito. O uso indevido pode violar leis e políticas.
http://192.168.65.7:2375)C:\ do host (como /mnt/host/c dentro da VM Linux) para /host_root dentro do contêinerC:\pwn.txt no hostSe o alvo for vulnerável, você verá o arquivo aparecer no host Windows.
192.168.65.7:2375 (HTTP, sem TLS).✅ Se
GET http://192.168.65.7:2375/_pingretornarOKde dentro de um contêiner, as condições da PoC provavelmente existem.
.
├─ cve_2025_9074_poc.py # PoC em Python (baseada em requests)
└─ README.md # Este arquivo
pip install requestshttp://192.168.65.7:2375) a partir do contêiner onde você executa a PoC# 1) Instalar dependência
pip install --no-input requests
# 2) Executar a PoC
python3 cve_2025_9074_poc.py
# Opcional: personalizar nome do arquivo de saída ou imagem
# python3 cve_2025_9074_poc.py --outfile test.txt --image busybox
Comportamento padrão:
http://192.168.65.7:2375/mnt/host/c (C:\ do Windows visto pela VM Linux)/host_rootC:\pwn.txt--host IP do host do Engine (padrão: 192.168.65.7)
--port Porta do Engine (padrão: 2375)
--image Imagem do contêiner (padrão: alpine)
--host-path Caminho no host/VM do Engine a vincular (padrão: /mnt/host/c)
--mount-path Caminho dentro do contêiner (padrão: /host_root)
--outfile Nome do arquivo a criar no C:\ do host (padrão: pwn.txt)
Em um sistema vulnerável, após executar a PoC você deve encontrar:
C:\pwn.txt
contendo o texto pwned_by_CVE_2025_9074.
A PoC usa um contêiner de curta duração. Se quiser ser minucioso:
# A partir de um shell privilegiado com acesso à CLI do docker:
docker ps -a --format '{{.ID}}\t{{.Image}}\t{{.Command}}'
# Remova pelo ID do contêiner se algum permanecer:
docker rm -f <CONTAINER_ID>
# Remova o arquivo de teste no host:
del C:\pwn.txt
HostConfig.Binds inclua caminhos como /mnt/host/c ou outras montagens de unidade do host.C:\ a partir de processos atribuíveis ao contexto da VM Linux do Docker.192.168.65.7:2375 (HTTP) é suspeita./ping não OK / conexão recusada: a API do engine não está acessível a partir do seu contêiner; o host pode estar corrigido ou não exposto.--host-path mapeia corretamente para o C:\ do Windows a partir da VM Linux. Alguns ambientes diferem.alpine ou alterne para busybox com --image busybox.Esta PoC é fornecida somente para fins educacionais e testes autorizados. Executar contra sistemas sem autorização explícita por escrito é ilegal e antiético. O autor e os colaboradores não são responsáveis por uso indevido ou danos.
MIT
Autor: w01f