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