Abusing Docker Socket for Privilege Escalation

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Bazı durumlarda sadece docker soketine erişiminiz vardır ve bunu kullanarak yetkileri yükseltmek istersiniz. Bazı eylemler çok şüpheli olabilir ve bunlardan kaçınmak isteyebilirsiniz, bu yüzden yetkileri yükseltmek için kullanışlı olabilecek farklı bayrakları burada bulabilirsiniz:

Mount ile

Kök olarak çalışan bir konteynerde dosya sisteminin farklı bölümlerini mount edebilir ve erişebilirsiniz. Ayrıca bir mount'u kullanarak konteyner içinde yetkileri yükseltebilirsiniz.

  • -v /:/host -> Ana bilgisayar dosya sistemi konteynere mount edilir, böylece ana bilgisayar dosya sistemini okuyabilirsiniz.

  • Ana bilgisayarda olduğunuz hissini vermek istiyorsanız, diğer savunma mekanizmalarını devre dışı bırakarak bayraklar kullanabilirsiniz:

  • --privileged

  • --cap-add=ALL

  • --security-opt apparmor=unconfined

  • --security-opt seccomp=unconfined

  • -security-opt label:disable

  • --pid=host

  • --userns=host

  • --uts=host

  • --cgroupns=host

  • **--device=/dev/sda1 --cap-add=SYS_ADMIN --security-opt apparmor=unconfined ** -> Bu, önceki yönteme benzer, ancak burada cihaz diski mount ediliyoruz. Ardından, konteyner içinde mount /dev/sda1 /mnt komutunu çalıştırarak ana bilgisayar dosya sistemine /mnt üzerinden erişebilirsiniz.

  • Ana bilgisayarda fdisk -l komutunu çalıştırarak </dev/sda1> cihazını mount etmek için bulun

  • -v /tmp:/host -> Herhangi bir nedenle sadece ana bilgisayardan bazı dizinleri mount edebilir ve ana bilgisayarda erişiminiz varsa. Mount edin ve mount edilen dizinde suid ile /bin/bash oluşturun, böylece ana bilgisayardan çalıştırabilir ve root'a yükseltebilirsiniz.

Belki /tmp klasörünü mount edemeyebilirsiniz, ancak farklı yazılabilir bir klasörü mount edebilirsiniz. Yazılabilir dizinleri şu komutu kullanarak bulabilirsiniz: find / -writable -type d 2>/dev/null

Linux makinesindeki tüm dizinlerin suid bitini desteklemeyeceğini unutmayın! Suid bitini destekleyen dizinleri kontrol etmek için mount | grep -v "nosuid" komutunu çalıştırın. Örneğin, genellikle /dev/shm, /run, /proc, /sys/fs/cgroup ve /var/lib/lxcfs suid bitini desteklemez.

Ayrıca, /etc veya yapılandırma dosyalarını içeren başka bir klasörü mount edebiliyorsanız, kök olarak docker konteynerinde bunları değiştirerek ana bilgisayarda istismar etmek ve yetkileri yükseltmek için kullanabilirsiniz (belki /etc/shadow'u değiştirerek).

Konteynerden Kaçma

  • --privileged -> Bu bayrakla konteynerden tüm izolasyonu kaldırırsınız. Kök olarak ayrıcalıklı konteynerlerden kaçmak için teknikleri kontrol edin (docker-breakout-privilege-escalation/#automatic-enumeration-and-escape).

  • --cap-add=<CAPABILITY/ALL> [--security-opt apparmor=unconfined] [--security-opt seccomp=unconfined] [-security-opt label:disable] -> Yetenekleri istismar etmek için, o yeteneği konteynere verin ve çalışmasını engelleyebilecek diğer koruma yöntemlerini devre dışı bırakın.

Curl

Bu sayfada docker bayraklarını kullanarak yetkileri yükseltme yöntemlerini tartıştık, bu yöntemleri curl komutunu kullanarak nasıl istismar edeceğinizi sayfada bulabilirsiniz:

pageAuthZ& AuthN - Docker Access Authorization Plugin
htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Last updated