
Exploit proof-of-concept per CVE-2025-9074 che permette l'escape dell'API di Docker Desktop tramite richieste HTTP raw. Fornisce una shell interattiva emulata all'interno di un contenitore utilizzando solo curl, dd e awk.
Un leggero script bash senza dipendenze che ti fornisce una shell interattiva emulata all'interno di un container Docker — usando solo curl, dd, od e awk. Nessun Python, nessun jq, nessun editor richiesto.
Realizzato per ambienti in cui hai solo accesso shell grezzo e devi eseguire comandi all'interno di un container Docker tramite la Docker Engine API.
Invece di usare la CLI di Docker, questo script parla direttamente con la Docker Engine REST API su HTTP (solitamente esposta su http://192.168.65.7:2375 in ambienti Docker Desktop / WSL2).
Esso:
C:\ montatodd + od — nessun Python necessarioDocker avvolge tutto l'output exec in un formato di framing binario:
[1 byte: stream type] [3 bytes: padding] [4 bytes: payload size (big-endian)] [payload...]
Questo script decodifica ciò frame per frame usando solo strumenti Unix standard.
bashcurldd, od, awk, grep, cut — tutti strumenti Unix standardhttp://192.168.65.7:2375 (Docker Desktop su WSL2)Niente jq, niente Python, niente nano, niente editor.
git clone https://github.com/yourusername/docker-shell.git
cd docker-shell
chmod +x docker_shell.sh
bash docker_shell.sh
================================================
Docker Emulated Shell [target: alpine_escape]
Commands: start | status | run <cmd> | exit
================================================
docker> start
docker> status
docker> run ls /mnt
docker> run ls /mnt/Users
docker> run cat /etc/os-release
docker> run id
docker> exit
Il container monta il tuo drive Windows C:\ (tramite WSL2) in /mnt:
| Percorso Windows |
|---|
run è un'istanza exec separata — lo stato non persiste tra i comandi. Usa run cd /some/dir && ls per concatenare comandi in una singola chiamata.alpine_escape), non per ID, così non esegue accidentalmente nel container sbagliato./tmp/docker_out.bin usando dd frame per frame.Modifica queste variabili all'inizio dello script per adattarle al tuo ambiente:
DOCKER="http://192.168.65.7:2375" # Docker Engine API address
CONTAINER="alpine_escape" # Container name
AGPLv3
| Comando | Descrizione |
|---|
start | Crea (se necessario) e avvia il container alpine_escape |
status | Mostra l'ID del container e lo stato attuale |
run <cmd> | Esegue qualsiasi comando shell all'interno del container |
exit / quit | Esce dalla shell emulata |
| All'interno del Container |
|---|
C:\ | /mnt |
C:\Users | /mnt/Users |
C:\Program Files | /mnt/Program Files |
C:\Windows\System32 | /mnt/Windows/System32 |