hacktricks/src/network-services-pentesting/nfs-service-pentesting.md

9.2 KiB
Raw Blame History

2049 - Pentesting NFS Service

{{#include ../banners/hacktricks-training.md}}

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

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

Монтування

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

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.

Nice NFSShell tutorial.

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.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}

{{#include ../banners/hacktricks-training.md}}