
Preuve de concept pour CVE-2025-9074 permettant une évasion de l'API Docker Desktop via des requêtes HTTP brutes. Fournit un shell interactif émulé à l'intérieur d'un conteneur utilisant uniquement curl, dd et awk.
Un script bash léger, sans dépendances, qui vous offre un shell interactif émulé à l'intérieur d'un conteneur Docker — en utilisant uniquement curl, dd, od et awk. Pas de Python, pas de jq, pas d'éditeur requis.
Conçu pour des environnements où vous n'avez qu'un accès shell brut et devez exécuter des commandes à l'intérieur d'un conteneur Docker via l'API du moteur Docker.
Au lieu d'utiliser l'interface CLI Docker, ce script parle directement à l'API REST du moteur Docker via HTTP (généralement exposée à http://192.168.65.7:2375 dans les environnements Docker Desktop / WSL2).
Il :
C:\ montédd + od — pas besoin de PythonDocker encapsule toute sortie exec dans un format de trame binaire :
[1 octet : type de flux] [3 octets : bourrage] [4 octets : taille de la charge utile (big-endian)] [charge utile...]
Ce script décode cette trame par trame en utilisant uniquement des outils Unix standards.
bashcurldd, od, awk, grep, cut — tous des outils Unix standardshttp://192.168.65.7:2375 (Docker Desktop sur WSL2)Pas de jq, pas de Python, pas de nano, pas d'éditeur.
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
| Commande | Description |
|---|---|
start | Crée (si nécessaire) et démarre le conteneur alpine_escape |
status | Affiche l'ID du conteneur et son état actuel |
run <cmd> | Exécute n'importe quelle commande shell à l'intérieur du conteneur |
exit / quit | Quitte le shell émulé |
Le conteneur monte votre lecteur Windows C:\ (via WSL2) sur /mnt :
| Chemin Windows | Dans le conteneur |
|---|---|
C:\ | /mnt |
C:\Users | /mnt/Users |
C:\Program Files | /mnt/Program Files |
C:\Windows\System32 | /mnt/Windows/System32 |
run est une instance exec séparée — l'état ne persiste pas entre les commandes. Utilisez run cd /some/dir && ls pour enchaîner des commandes en un seul appel.alpine_escape), pas par ID, afin d'éviter d'exécuter accidentellement des commandes dans le mauvais conteneur./tmp/docker_out.bin en utilisant dd trame par trame.Modifiez ces variables en haut du script pour correspondre à votre environnement :
DOCKER="http://192.168.65.7:2375" # Adresse de l'API du moteur Docker
CONTAINER="alpine_escape" # Nom du conteneur
AGPLv3