2049 - Pentesting NFS Service

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

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

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

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

Аутентифікація зазвичай ґрунтується на ідентифікаторах UNIX UID/GID та членствах у групах. Однак виникає виклик через можливу несумісність у відображенні 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

Дозволи

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

NSFShell

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

Гарний посібник з NFSShell.

Файли конфігурації

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

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

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

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

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

  • Власність кореневих файлів (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}
Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Last updated