NFS no_root_squash/no_all_squash misconfiguration PE
_ /etc/exports _ dosyasını okuyun, eğer no_root_squash olarak yapılandırılmış bir dizin bulursanız, o dizine bir istemci olarak erişebilir ve o dizine yerel root gibi yazabilirsiniz.
no_root_squash: Bu seçenek, istemcideki root kullanıcısına NFS sunucusundaki dosyalara root olarak erişim yetkisi verir. Bu ciddi güvenlik sorunlarına yol açabilir.
no_all_squash: Bu, no_root_squash seçeneğine benzer, ancak root olmayan kullanıcılara uygulanır. Hayal edin, kimliği belirsiz bir kullanıcı olarak bir kabuk elde ettiniz; /etc/exports dosyasını kontrol ettiniz; no_all_squash seçeneği mevcut; /etc/passwd dosyasını kontrol ettiniz; root olmayan bir kullanıcıyı taklit ettiniz; (nfs kullanarak bağlanarak) o kullanıcı olarak bir suid dosyası oluşturdunuz. Suid dosyasını kimliği belirsiz bir kullanıcı olarak çalıştırın ve farklı bir kullanıcıya dönüşün.
Ayrıcalık Yükseltme
Uzaktan Sömürü
Bu zafiyeti bulduysanız, onu sömürebilirsiniz:
Bir istemci makinede o dizini bağlayarak, root olarak içine /bin/bash ikili dosyasını kopyalayarak ve ona SUID yetkileri vererek, kurban makineden o bash ikili dosyasını çalıştırarak.
İstemci makinesinde bu dizini bağlamak ve içine kök olarak kopyalamak için, SUID izinini kötüye kullanacak derlenmiş payload'ımızı içeren bağlanmış klasöre yerleştirin, SUID haklarını verin ve kurban makineden bu ikiliyi çalıştırın (burada bazı C SUID payloadları bulabilirsiniz).
Yerel Sızma
Unutmayın, eğer kendi makinenizden hedef makineye bir tünel oluşturabilirseniz, gerekli portları tünelleme yaparak bu ayrıcalık yükseltme işlemini gerçekleştirmek için hala Uzaktan sürümü kullanabilirsiniz.
Aşağıdaki hile, /etc/exports
dosyasının bir IP adresini belirttiği durumda kullanılır. Bu durumda her iki durumda da uzaktan sızma kullanamazsınız ve bu hileyi kullanmanız gerekecektir.
Sızma işleminin çalışması için başka bir gereklilik, /etc/export
içindeki ihracatın insecure
bayrağını kullanması gerektiğidir.
--/etc/export'ın bir IP adresi belirtip belirtmediğinden emin değilim, bu hile işe yarayacak mı--
Temel Bilgiler
Senaryo, yerel bir makinede bağlı olan bir NFS paylaşımının sömürülmesini içerir ve istemcinin uid/gid'sini belirtmesine izin veren NFSv3 spesifikasyonundaki bir kusuru kullanır, bu da yetkisiz erişimi mümkün kılar. Sömürü, NFS RPC çağrılarının sahteciliğine izin veren libnfs adlı bir kütüphanenin kullanılmasını içerir.
Kütüphanenin Derlenmesi
Kütüphane derleme adımları, çekirdek sürümüne bağlı olarak ayarlamalar gerektirebilir. Bu özel durumda, fallocate sistem çağrıları yorumlandı. Derleme süreci aşağıdaki komutları içerir:
Saldırıyı Gerçekleştirme
Saldırı, ayrıcalıkları root'a yükselten ve ardından bir kabuk çalıştıran basit bir C programı (pwn.c
) oluşturmayı içerir. Program derlenir ve oluşan ikili (a.out
), RPC çağrılarında uid'yi sahteleyen ld_nfs.so
kullanılarak kök paylaşıma yerleştirilir:
Saldırı kodunu derleyin:
Saldırıyı paylaşıma yerleştirin ve uid'yi sahteleyerek izinlerini değiştirin:
Kök ayrıcalıklarını elde etmek için saldırıyı çalıştırın:
Bonus: Gizli Dosya Erişimi için NFShell
Kök erişimi elde edildikten sonra, iz bırakmamak için sahipliği değiştirmeksizin NFS paylaşımıyla etkileşimde bulunmak için bir Python betiği (nfsh.py) kullanılır. Bu betik, erişilen dosyanın uid'sini ayarlayarak paylaşımdaki dosyalarla izin sorunları olmadan etkileşim sağlar.
Çalıştırma şekli:
Referanslar
Last updated