
Proof-of-Concept-Exploit für CVE-2025-9074, der einen Docker Desktop API Escape über rohe HTTP-Anfragen ermöglicht. Bietet eine emulierte interaktive Shell innerhalb eines Containers, die nur curl, dd und awk verwendet.
Ein leichtgewichtiges, abhängigkeitsfreies Bash-Skript, das Ihnen eine emulierte interaktive Shell in einem Docker-Container bietet – unter Verwendung von nichts als curl, dd, od und awk. Kein Python, kein jq, kein Editor erforderlich.
Gebaut für Umgebungen, in denen Sie nur rohen Shell-Zugriff haben und Befehle in einem Docker-Container über die Docker Engine API ausführen müssen.
Anstatt die Docker-CLI zu verwenden, spricht dieses Skript direkt mit der Docker Engine REST API über HTTP (normalerweise verfügbar unter http://192.168.65.7:2375 in Docker Desktop / WSL2-Umgebungen).
Es:
C:\ eingebunden hatdd + od – kein Python nötigDocker verpackt alle Exec-Ausgaben in ein binäres Framing-Format:
[1 Byte: Streamtyp] [3 Bytes: Padding] [4 Bytes: Nutzdatengröße (Big-Endian)] [Nutzlast...]
Dieses Skript dekodiert das Frame für Frame unter Verwendung nur standardmäßiger Unix-Tools.
bashcurldd, od, awk, grep, cut – alles standardmäßige Unix-Toolshttp://192.168.65.7:2375 (Docker Desktop auf WSL2)Kein jq, kein Python, kein nano, kein 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
Der Container bindet Ihr Windows-Laufwerk C:\ (über WSL2) unter /mnt ein:
| Windows-Pfad | Im Container |
|---|
run ist eine separate Exec-Instanz – der Zustand bleibt nicht zwischen Befehlen erhalten. Verwenden Sie run cd /some/dir && ls, um Befehle in einem Aufruf zu verketten.alpine_escape), nicht mit ID, sodass es nicht versehentlich in den falschen Container ausführt./tmp/docker_out.bin mit dd frame-weise analysiert.Bearbeiten Sie diese Variablen am Anfang des Skripts, um sie an Ihre Umgebung anzupassen:
DOCKER="http://192.168.65.7:2375" # Docker-Engine-API-Adresse
CONTAINER="alpine_escape" # Containername
AGPLv3
| Befehl | Beschreibung |
|---|
start | Erstellt (falls nötig) und startet den Container alpine_escape |
status | Zeigt die Container-ID und den aktuellen Zustand an |
run <cmd> | Führt einen beliebigen Shell-Befehl innerhalb des Containers aus |
exit / quit | Beendet die emulierte Shell |
C:\ | /mnt |
C:\Users | /mnt/Users |
C:\Program Files | /mnt/Program Files |
C:\Windows\System32 | /mnt/Windows/System32 |