2049 - Pentesting NFS Service

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 sunucu tarafından ek bir doğrulama yapılması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, TCP veya UDP yeterlidir).

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

Versiyonlar

  • NFSv2: Bu versiyon, çeşitli sistemlerle geniş uyumluluğu ile tanınır ve ilk işlemlerinin çoğunlukla UDP üzerinden gerçekleşmesi ile ö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 getirmiştir. Dikkate değer iyileştirmeler arasında yüksek güvenlik için Kerberos entegrasyonu, güvenlik duvarlarını aşabilme ve port haritalayıcılarına 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 durum bilgisi olan 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

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

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

Mounting

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

showmount -e <IP>

Sonra bunu kullanarak bağlayın:

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

Sürüm 2'yi kullanmayı belirtmelisiniz çünkü herhangi bir kimlik doğrulama veya yetkilendirme içermez.

Örnek:

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

İzinler

Eğer yalnızca 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 bu 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.

Güzel NFSShell eğitimi.

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 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 ele alınmadığında 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.xyz/pentesting/nfs-service-pentesting

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

Last updated