2049 - NFS Servisini Pentest Etme

Reading time: 5 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

Temel Bilgiler

NFS, kullanıcıların dosyalara bir ağ üzerinden, bu dosyaların yerel bir dizinde bulunuyormuş gibi sorunsuz bir şekilde erişmelerini sağlayan istemci/sunucu için tasarlanmış bir sistemdir.

Bu protokolün dikkat çekici bir yönü, yerleşik kimlik doğrulama veya yetkilendirme mekanizmalarının olmamasıdır. Bunun yerine, yetkilendirme dosya sistemi bilgilerine dayanır ve sunucu, istemci tarafından sağlanan kullanıcı bilgilerini dosya sisteminin gerektirdiği yetkilendirme formatına doğru bir şekilde çevirmekle görevlidir; bu genellikle UNIX sözdizimini takip eder.

Kimlik doğrulama genellikle UNIX UID/GID tanımlayıcıları ve grup üyeliklerine dayanır. Ancak, istemciler ve sunucular arasındaki UID/GID eşleştirmelerindeki olası uyumsuzluk nedeniyle bir zorluk ortaya çıkar; bu durum sunucunun ek bir doğrulama yapmasına olanak tanımaz. Sonuç olarak, bu protokol, bu kimlik doğrulama yöntemine dayanması nedeniyle en iyi şekilde güvenilir ağlar içinde kullanılmak için uygundur.

Varsayılan port: 2049/TCP/UDP (sadece versiyon 4 için, yalnızca TCP veya UDP gereklidir).

2049/tcp open  nfs     2-3 (RPC #100003

Versiyonlar

  • NFSv2: Bu versiyon, çeşitli sistemlerle geniş uyumluluğu ile tanınır ve başlangıçta çoğunlukla UDP üzerinden gerçekleştirilen işlemlerle önemini vurgular. Serinin en eski versiyonu olarak, gelecekteki gelişmeler için bir temel oluşturmuştur.

  • NFSv3: Bir dizi iyileştirme ile tanıtılan NFSv3, değişken dosya boyutlarını destekleyerek ve geliştirilmiş hata raporlama mekanizmaları sunarak selefinin üzerine çıkmıştır. Gelişmelerine rağmen, NFSv2 istemcileri ile tam geriye dönük uyumlulukta sınırlamalarla karşılaşmıştır.

  • NFSv4: NFS serisinde bir dönüm noktası olan NFSv4, ağlar üzerinden dosya paylaşımını modernize etmek için tasarlanmış bir dizi özellik sunmuştur. Dikkate değer iyileştirmeler arasında yüksek güvenlik için Kerberos entegrasyonu, güvenlik duvarlarını aşabilme ve portmapper'lara ihtiyaç duymadan İnternet üzerinden çalışabilme yeteneği, Erişim Kontrol Listeleri (ACL'ler) desteği ve durum tabanlı işlemlerin tanıtımı bulunmaktadır. Performans iyileştirmeleri ve durumlu bir protokolün benimsenmesi, NFSv4'ü ağ dosya paylaşım teknolojilerinde önemli bir ilerleme olarak ayırmaktadır.

NFS'nin her versiyonu, ağ ortamlarının gelişen ihtiyaçlarını karşılamak amacıyla geliştirilmiş, güvenlik, uyumluluk ve performansı kademeli olarak artırmıştır.

Sayım

Kullanışlı nmap betikleri

bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share

Kullanışlı metasploit modülleri

bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions

Mounting

Hangi klasörün sunucu tarafından mevcut olduğunu öğrenmek için şunu sorabilirsiniz:

bash
showmount -e <IP>

Sonra bunu kullanarak bağlayın:

bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock

Örnek:

bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock

İzinler

Eğer sadece bazı kullanıcılar tarafından erişilebilen dosyalar veya klasörler içeren bir klasörü bağlarsanız (UID ile). O UID ile yerel olarak bir kullanıcı oluşturabilir ve o kullanıcı ile dosya/klasöre erişebilirsiniz.

NSFShell

Dosyaları erişmek için UID ve GID'yi kolayca listelemek, bağlamak ve değiştirmek için nfsshell kullanabilirsiniz.

Nice NFSShell tutorial.

Yapılandırma dosyaları

/etc/exports
/etc/lib/nfs/etab

Tehlikeli Ayarlar

  • Okuma ve Yazma İzinleri (rw): Bu ayar, dosya sisteminden hem okuma hem de yazma işlemlerine izin verir. Bu kadar geniş bir erişim izni vermenin sonuçlarını dikkate almak önemlidir.

  • Güvensiz Portların Kullanımı (insecure): Bu etkinleştirildiğinde, sistemin 1024'ün üzerindeki portları kullanmasına izin verir. Bu aralıktaki portların güvenliği daha az katı olabilir ve riski artırabilir.

  • İç İçe Dosya Sistemlerinin Görünürlüğü (nohide): Bu yapılandırma, başka bir dosya sistemi bir dışa aktarılmış dizinin altında monte edilse bile dizinlerin görünür olmasını sağlar. Her dizin, uygun yönetim için kendi dışa aktarma girişine ihtiyaç duyar.

  • Kök Dosyalarının Sahipliği (no_root_squash): Bu ayar ile, kök kullanıcı tarafından oluşturulan dosyalar, 0 olan orijinal UID/GID'lerini korur, bu da en az ayrıcalık ilkesini göz ardı eder ve potansiyel olarak aşırı izinler verebilir.

  • Tüm Kullanıcıların Squash Edilmemesi (no_all_squash): Bu seçenek, kullanıcı kimliklerinin sistem genelinde korunmasını sağlar, bu da doğru bir şekilde yönetilmezse izin ve erişim kontrol sorunlarına yol açabilir.

NFS Yanlış Yapılandırmaları ile Ayrıcalık Yükseltme

NFS no_root_squash ve no_all_squash ayrıcalık yükseltmesi

HackTricks Otomatik Komutlar

Protocol_Name: NFS    #Protocol Abbreviation if there is one.
Port_Number:  2049     #Comma separated if there is more than one.
Protocol_Description: Network File System         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for NFS
Note: |
NFS is a system designed for client/server that enables users to seamlessly access files over a network as though these files were located within a local directory.

#apt install nfs-common
showmount 10.10.10.180      ~or~showmount -e 10.10.10.180
should show you available shares (example /home)

mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in

https://book.hacktricks.wiki/en/network-services-pentesting/nfs-service-pentesting.html

Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}

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