NFS no_root_squash/no_all_squash misconfiguration PE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
_ /etc/exports _ dosyasını okuyun, eğer no_root_squash olarak yapılandırılmış bir dizin bulursanız, o dizine istemci olarak erişebilir ve o dizin içinde yerel makinenin root'uymuş gibi yazabilirsiniz.
no_root_squash: Bu seçenek, istemcideki root kullanıcısına NFS sunucusundaki dosyalara root olarak erişim yetkisi verir. Bu da 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, nobody kullanıcısı olarak bir shell'e sahipsiniz; /etc/exports dosyasını kontrol ettiniz; no_all_squash seçeneği mevcut; /etc/passwd dosyasını kontrol edin; root olmayan bir kullanıcıyı taklit edin; o kullanıcı olarak bir suid dosyası oluşturun (nfs kullanarak montaj yaparak). SUID'yi nobody kullanıcısı olarak çalıştırın ve farklı bir kullanıcıya dönüşün.
Bu güvenlik açığını bulduysanız, bunu sömürebilirsiniz:
O dizini bir istemci makinesinde montajlayarak, ve root olarak montajlanmış klasöre /bin/bash ikili dosyasını kopyalayarak ve ona SUID hakları vererek, ve kurban makineden o bash ikili dosyasını çalıştırarak.
O dizini bir istemci makinesine monte etmek ve root olarak monte edilen klasöre SUID iznini kötüye kullanacak derlenmiş yükümüzü kopyalamak, ona SUID hakları vermek ve kurban makineden o ikili dosyayı çalıştırmak (burada bazı C SUID yüklerini bulabilirsiniz).
Not edin ki eğer makinenizden kurban makinesine bir tünel oluşturabiliyorsanız, bu ayrıcalık yükseltmesini istismar etmek için Uzaktan versiyonu kullanabilirsiniz.
Aşağıdaki hile, dosya /etc/exports
bir IP gösteriyorsa geçerlidir. Bu durumda uzaktan istismarı kullanamayacaksınız ve bu hileyi istismar etmeniz gerekecek.
İstismarın çalışması için bir diğer gerekli şart, /etc/export
içindeki dışa aktarmanın insecure
bayrağını kullanmasıdır.
--Eğer /etc/export
bir IP adresi gösteriyorsa bu hilenin çalışıp çalışmayacağından emin değilim--
Senaryo, yerel bir makinede monte edilmiş bir NFS paylaşımını istismar etmeyi içerir ve NFSv3 spesifikasyonundaki bir açığı kullanarak istemcinin uid/gid belirtmesine olanak tanır, bu da yetkisiz erişimi mümkün kılabilir. İstismar, NFS RPC çağrılarını sahtelemek için kullanılan libnfs kütüphanesini kullanmayı içerir.
Kütüphane derleme adımları, çekirdek sürümüne bağlı olarak ayarlamalar gerektirebilir. Bu özel durumda, fallocate sistem çağrıları yorum satırı haline getirilmiştir. Derleme süreci aşağıdaki komutları içerir:
Exploit, root yetkilerini yükselten ve ardından bir shell çalıştıran basit bir C programı (pwn.c
) oluşturmayı içerir. Program derlenir ve elde edilen ikili dosya (a.out
), RPC çağrılarında uid'i sahte olarak göstermek için ld_nfs.so
kullanarak suid root ile paylaşıma yerleştirilir:
Exploit kodunu derleyin:
Exploit'i paylaşımda yerleştirin ve uid'i sahte göstererek izinlerini değiştirin:
Root yetkilerini kazanmak için exploit'i çalıştırın:
Root erişimi elde edildikten sonra, sahipliği değiştirmeden NFS paylaşımı ile etkileşimde bulunmak için (iz bırakmamak için) bir Python betiği (nfsh.py) kullanılır. Bu betik, erişilen dosyanın uid'ini eşleştirerek, paylaşımda dosyalarla izin sorunları olmadan etkileşimde bulunmayı sağlar:
Çalıştırın gibi:
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)