2049 - Pentesting NFS Service

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile öğrenin!

Temel Bilgiler

NFS, kullanıcıların ağ üzerinden dosyalara yerel bir dizin içindeymiş gibi sorunsuz erişim sağlamasını sağlayan bir istemci/sunucu sistemi olarak tasarlanmıştır.

Bu protokolün dikkate değer bir yönü, yerleşik bir kimlik doğrulama veya yetkilendirme mekanizması 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, temel olarak 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şlemelerindeki potansiyel uyumsuzluk nedeniyle bir zorluk ortaya çıkar ve sunucu tarafından ek doğrulama yapılamaz. Sonuç olarak, bu protokol, bu kimlik doğrulama yöntemine dayandığı için güvenilen ağlar içinde kullanmak için en uygun olanıdır.

Varsayılan port: 2049/TCP/UDP (sadece 4. sürüm için TCP veya UDP gereklidir).

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

Sürümler

  • NFSv2: Bu sürüm, çeşitli sistemlerle geniş uyumluluğuyla tanınır ve başlangıç işlemlerini çoğunlukla UDP üzerinden gerçekleştirerek önemini belirtir. Serinin en eski sürümü olan NFSv2, gelecekteki gelişmeler için temel oluşturdu.

  • NFSv3: Bir dizi geliştirme ile tanıtılan NFSv3, önceki sürümünü destekleyen değişken dosya boyutlarını destekleyerek ve gelişmiş hata raporlama mekanizmaları sunarak önceki sürümünü genişletti. Gelişmelerine rağmen, NFSv2 istemcileriyle tam geriye dönük uyumlulukta sınırlamalarla karşılaştı.

  • NFSv4: NFS serisinin dönüm noktası olan NFSv4, ağlar arasında dosya paylaşımını modernize etmek için tasarlanmış bir dizi özellik getirdi. Dikkate değer iyileştirmeler arasında yüksek güvenlik için Kerberos'un entegrasyonu, port eşlemcilerine ihtiyaç duymadan güvenlik duvarlarını aşabilme ve İnternet üzerinden çalışabilme yeteneği, Erişim Kontrol Listeleri (ACL'ler) için destek ve durum tabanlı işlemlerin tanıtılması bulunur. Performans iyileştirmeleri ve durum tabanlı bir protokolün benimsenmesi, NFSv4'ü ağ dosya paylaşım teknolojilerinde önemli bir ilerleme olarak ayırt eder.

Her NFS sürümü, ağ ortamlarının gelişen ihtiyaçlarını ele almak, güvenliği, uyumluluğu ve performansı aşamalı olarak artırmak amacıyla geliştirilmiştir.

Numaralandırma

Kullanışlı nmap komut dosyaları

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

Metasploit, birçok farklı ağ hizmetini hedef almak için kullanılan güçlü bir araçtır. Aşağıda, NFS hizmeti için kullanışlı olan bazı Metasploit modüllerini bulabilirsiniz:

  • auxiliary/scanner/nfs/nfsmount: Bu modül, NFS sunucularını taramak ve paylaşımları listelemek için kullanılır.

  • auxiliary/scanner/nfs/nfsenum: Bu modül, NFS sunucularında dosya ve dizinleri keşfetmek için kullanılır.

  • exploit/linux/nfs/nfsd: Bu modül, NFS sunucularında güvenlik açıklarını sömürmek için kullanılır.

  • exploit/solaris/nfs/nfsd: Bu modül, Solaris işletim sistemli NFS sunucularında güvenlik açıklarını sömürmek için kullanılır.

  • exploit/windows/nfs/nfsd: Bu modül, Windows işletim sistemli NFS sunucularında güvenlik açıklarını sömürmek için kullanılır.

Bu modüller, NFS hizmetini hedef almak ve güvenlik açıklarını tespit etmek veya sömürmek için kullanılabilir. Metasploit'in sunduğu diğer modüllerle birlikte, kapsamlı bir NFS pentesting deneyimi sağlarlar.

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

Bağlama

Hangi klasörün sunucunun bağlamaya uygun olduğunu bilmek için aşağıdaki komutu kullanabilirsiniz:

showmount -e <IP>

Ardından şunu kullanarak bağlayın:

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

Örnek:

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

İzinler

Eğer UID tarafından sadece bazı kullanıcıların erişebildiği dosya veya klasörleri içeren bir klasörü bağlarsanız. Bu UID'ye sahip bir kullanıcıyı yerel olarak oluşturabilir ve bu kullanıcıyı kullanarak dosya/klasöre erişebilirsiniz.

NSFShell

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

Güzel bir NFSShell öğretici.

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 geniş erişimin sonuçlarını düşünmek önemlidir.

  • Güvensiz Portların Kullanımı (insecure): Bu etkinleştirildiğinde, sistem 1024'den büyük portları kullanabilir. Bu aralıktaki portların güvenliği daha az sıkı olabilir ve riski artırabilir.

  • Gömülü Dosya Sistemlerinin Görünürlüğü (nohide): Bu yapılandırma, başka bir dosya sistemi bir ihracat edilen dizinin altına bağlandığında bile dizinleri görünür hale getirir. Her dizin, uygun yönetim için kendi ihracat girişine ihtiyaç duyar.

  • Kök Dosyalarının Sahipliği (no_root_squash): Bu ayarla, kök kullanıcısı tarafından oluşturulan dosyalar, en az ayrıcalık ilkesini göz ardı ederek orijinal UID/GID değerlerini korur ve aşırı izinler sağlayabilir.

  • Tüm Kullanıcıların Sıkıştırılmaması (no_all_squash): Bu seçenek, kullanıcı kimliklerinin sistem genelinde korunmasını sağlar, ancak doğru şekilde yönetilmezse izin ve erişim kontrol sorunlarına yol açabilir.

NFS hatalı yapılandırmalarını kullanarak Ayrıcalık Yükseltme

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

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}
AWS hacklemeyi sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

Last updated