2049 - Pentesting NFS Service

Support HackTricks

Основна інформація

NFS - це система, розроблена для клієнт/сервер, яка дозволяє користувачам безперешкодно отримувати доступ до файлів через мережу, ніби ці файли знаходяться в локальному каталозі.

Помітним аспектом цього протоколу є відсутність вбудованих механізмів аутентифікації або авторизації. Натомість авторизація покладається на інформацію файлової системи, при цьому сервер відповідає за точний переклад інформації про користувача, наданої клієнтом, у необхідний формат авторизації файлової системи, переважно слідуючи синтаксису UNIX.

Аутентифікація зазвичай покладається на ідентифікатори UID/GID UNIX та членство в групах. Однак виникає проблема через потенційне невідповідність у відображеннях UID/GID між клієнтами та серверами, що не залишає місця для додаткової перевірки з боку сервера. Внаслідок цього протокол найкраще підходить для використання в достовірних мережах, враховуючи його залежність від цього методу аутентифікації.

Порт за замовчуванням: 2049/TCP/UDP (за винятком версії 4, вона просто потребує TCP або UDP).

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

Версії

  • NFSv2: Ця версія відзначається широкою сумісністю з різними системами, що підкреслює її значення з початковими операціями переважно через UDP. Будучи найстарішою у серії, вона заклала основу для подальших розробок.

  • NFSv3: Введена з рядом покращень, NFSv3 розширила можливості свого попередника, підтримуючи змінні розміри файлів і пропонуючи покращені механізми звітності про помилки. Незважаючи на свої досягнення, вона стикалася з обмеженнями в повній зворотній сумісності з клієнтами NFSv2.

  • NFSv4: Важлива версія в серії NFS, NFSv4 представила набір функцій, призначених для модернізації обміну файлами через мережі. Помітні покращення включають інтеграцію Kerberos для високої безпеки, можливість проходження через брандмауери та роботи через Інтернет без необхідності в портмапперах, підтримку списків контролю доступу (ACL) та впровадження операцій на основі стану. Її покращення продуктивності та впровадження протоколу збереження стану відрізняють NFSv4 як важливий крок вперед у технологіях обміну файлами в мережі.

Кожна версія NFS була розроблена з метою задовольнити еволюційні потреби мережевих середовищ, поступово покращуючи безпеку, сумісність і продуктивність.

Перерахування

Корисні скрипти nmap

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

Корисні модулі metasploit

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

Mounting

Щоб дізнатися, яка папка доступна на сервері для монтування, ви можете запитати її за допомогою:

showmount -e <IP>

Тоді змонтуйте його, використовуючи:

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

Ви повинні вказати використовувати версію 2, оскільки вона не має жодної автентифікації або авторизації.

Приклад:

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

Permissions

Якщо ви змонтуєте папку, яка містить файли або папки, доступні лише деяким користувачам (за UID). Ви можете створити локально користувача з цим UID і, використовуючи цього користувача, ви зможете доступитися до файлу/папки.

NSFShell

Щоб легко перерахувати, змонтувати та змінити UID і GID для доступу до файлів, ви можете використовувати nfsshell.

Гарний туторіал по NFSShell.

Config files

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

Небезпечні налаштування

  • Дозволи на читання та запис (rw): Це налаштування дозволяє як читання, так і запис у файлову систему. Важливо враховувати наслідки надання такого широкого доступу.

  • Використання небезпечних портів (insecure): Коли це увімкнено, система може використовувати порти вище 1024. Безпека портів вище цього діапазону може бути менш суворою, що збільшує ризик.

  • Видимість вкладених файлових систем (nohide): Це налаштування робить каталоги видимими, навіть якщо інша файлова система змонтована нижче експортованого каталогу. Кожен каталог потребує власного запису експорту для належного управління.

  • Власність файлів root (no_root_squash): З цим налаштуванням файли, створені користувачем root, зберігають свій оригінальний UID/GID 0, ігноруючи принцип найменших привілеїв і потенційно надаючи надмірні дозволи.

  • Несквашування всіх користувачів (no_all_squash): Ця опція забезпечує збереження ідентичностей користувачів по всій системі, що може призвести до проблем з дозволами та контролем доступу, якщо не буде належним чином оброблено.

Підвищення привілеїв за допомогою неправильних налаштувань NFS

NFS no_root_squash та no_all_squash підвищення привілеїв

HackTricks Автоматичні команди

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

Last updated