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

145 lines
9.9 KiB
Markdown
Raw Normal View History

2024-02-11 01:46:25 +00:00
# 2049 - Testowanie penetracyjne usługi NFS
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>
2024-02-11 01:46:25 +00:00
## **Podstawowe informacje**
2024-02-11 01:46:25 +00:00
**NFS** to system zaprojektowany dla **klient/serwer**, który umożliwia użytkownikom bezproblemowy dostęp do plików przez sieć, tak jakby te pliki znajdowały się w lokalnym katalogu.
2024-02-11 01:46:25 +00:00
Należy zauważyć, że ten protokół nie posiada wbudowanych mechanizmów **uwierzytelniania** ani **autoryzacji**. Zamiast tego, autoryzacja opiera się na **informacjach o systemie plików**, a serwer ma za zadanie dokładnie przetłumaczyć **informacje o użytkowniku dostarczone przez klienta** na wymagany przez system plików **format autoryzacji**, przede wszystkim zgodnie z **składnią UNIX**.
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
Uwierzytelnianie zwykle opiera się na **identyfikatorach `UID`/`GID` UNIX** i przynależności do grup. Jednak pojawia się wyzwanie związane z potencjalnym niezgodnymi **mapowaniami `UID`/`GID`** między klientami a serwerami, nie pozostawiając miejsca na dodatkową weryfikację przez serwer. W rezultacie, protokół ten najlepiej sprawdza się w **zaufanych sieciach**, ze względu na swoje poleganie na tej metodzie uwierzytelniania.
2024-02-11 01:46:25 +00:00
**Domyślny port**: 2049/TCP/UDP (z wyjątkiem wersji 4, która wymaga tylko TCP lub UDP).&#x20;
2022-05-01 13:25:53 +00:00
```
2049/tcp open nfs 2-3 (RPC #100003
```
2024-02-11 01:46:25 +00:00
### Wersje
2024-02-11 01:46:25 +00:00
- **NFSv2**: Ta wersja jest znana ze swojej szerokiej kompatybilności z różnymi systemami, co potwierdza jej znaczenie dzięki początkowym operacjom przeważnie realizowanym przez UDP. Jako **najstarsza** w serii, położyła podwaliny pod przyszłe rozwinięcia.
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
- **NFSv3**: Wprowadzona z szeregiem ulepszeń, NFSv3 rozszerzyła swojego poprzednika, obsługując zmienne rozmiary plików i oferując ulepszone mechanizmy raportowania błędów. Pomimo swoich postępów, napotykała ograniczenia w pełnej kompatybilności wstecznej z klientami NFSv2.
2024-02-08 21:36:15 +00:00
2024-02-11 01:46:25 +00:00
- **NFSv4**: Wersja przełomowa w serii NFS, NFSv4 przyniosła zestaw funkcji zaprojektowanych do nowoczesnego udostępniania plików w sieciach. Znaczące ulepszenia obejmują integrację Kerberosa dla **wysokiego poziomu bezpieczeństwa**, zdolność do przekraczania zapór ogniowych i działania w Internecie bez potrzeby portmapperów, obsługę list kontroli dostępu (ACL), oraz wprowadzenie operacji opartych na stanie. Jej ulepszenia wydajnościowe i przyjęcie protokołu stanowego wyróżniają NFSv4 jako przełomowy postęp w technologiach udostępniania plików w sieci.
2024-02-08 21:36:15 +00:00
2024-02-11 01:46:25 +00:00
Każda wersja NFS została opracowana w celu zaspokojenia zmieniających się potrzeb środowisk sieciowych, stopniowo poprawiając bezpieczeństwo, kompatybilność i wydajność.
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
## Wyliczanie
2024-02-11 01:46:25 +00:00
### Przydatne skrypty nmap
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
2024-02-11 01:46:25 +00:00
### Przydatne moduły metasploit
Metasploit to potężne narzędzie do testowania penetracyjnego, które oferuje wiele modułów, które mogą być użyteczne podczas testowania usług sieciowych. Oto kilka przykładowych modułów, które warto znać:
2024-02-11 01:46:25 +00:00
- `auxiliary/scanner/nfs/nfsmount` - Moduł ten pozwala na skanowanie i montowanie udziałów NFS.
- `auxiliary/scanner/nfs/nfsenum` - Ten moduł umożliwia wykonywanie enumeracji usług NFS, takich jak listowanie katalogów i plików.
- `auxiliary/scanner/nfs/nfs_showmount` - Moduł ten pozwala na wykonywanie zapytań showmount w celu uzyskania informacji o dostępnych udziałach NFS.
- `auxiliary/scanner/nfs/nfs_statfs` - Ten moduł umożliwia pobieranie informacji statystycznych o udziałach NFS.
- `exploit/linux/nfs/nfsd` - Moduł ten pozwala na zdalne wykonanie kodu na serwerze NFS poprzez wykorzystanie podatności w usłudze nfsd.
2024-02-11 01:46:25 +00:00
Pamiętaj, że metasploit oferuje wiele innych modułów, które mogą być przydatne podczas testowania penetracyjnego usług sieciowych.
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
2024-02-11 01:46:25 +00:00
### Montowanie
2024-02-11 01:46:25 +00:00
Aby dowiedzieć się, **który folder** na serwerze jest **dostępny** do zamontowania, możesz zapytać o to używając:
```bash
showmount -e <IP>
```
2024-02-11 01:46:25 +00:00
Następnie zamontuj go za pomocą:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
2024-02-11 01:46:25 +00:00
Powinieneś określić, żeby **używać wersji 2**, ponieważ nie posiada **żadnej** **autoryzacji** ani **uwierzytelniania**.
2024-02-11 01:46:25 +00:00
**Przykład:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
2024-02-11 01:46:25 +00:00
## Uprawnienia
2024-02-11 01:46:25 +00:00
Jeśli zamontujesz folder, który zawiera **pliki lub foldery dostępne tylko dla określonego użytkownika** (za pomocą **UID**), możesz **lokalnie utworzyć** użytkownika o tym **UID** i używając tego użytkownika będziesz mógł **uzyskać dostęp** do pliku/folderu.
2022-05-01 13:25:53 +00:00
## NSFShell
2024-02-11 01:46:25 +00:00
Aby łatwo wyświetlać, montować i zmieniać UID i GID w celu uzyskania dostępu do plików, możesz użyć [nfsshell](https://github.com/NetDirect/nfsshell).
2024-02-11 01:46:25 +00:00
[Ładny samouczek NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
2024-02-11 01:46:25 +00:00
## Pliki konfiguracyjne
2022-05-01 13:25:53 +00:00
```
/etc/exports
/etc/lib/nfs/etab
```
2024-02-11 01:46:25 +00:00
### Niebezpieczne ustawienia
2024-02-11 01:46:25 +00:00
- **Uprawnienia do odczytu i zapisu (`rw`):** Ta opcja umożliwia zarówno odczyt, jak i zapis do systemu plików. Należy dokładnie rozważyć konsekwencje udzielenia tak szerokiego dostępu.
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
- **Użycie niezabezpieczonych portów (`insecure`):** Po włączeniu tej opcji system może korzystać z portów powyżej 1024. Bezpieczeństwo portów powyżej tej wartości może być mniejsze, co zwiększa ryzyko.
2024-02-08 21:36:15 +00:00
2024-02-11 01:46:25 +00:00
- **Widoczność zagnieżdżonych systemów plików (`nohide`):** Ta konfiguracja sprawia, że katalogi są widoczne nawet wtedy, gdy inny system plików jest zamontowany poniżej eksportowanego katalogu. Każdy katalog wymaga własnego wpisu eksportu dla prawidłowego zarządzania.
2024-02-08 21:36:15 +00:00
2024-02-11 01:46:25 +00:00
- **Właścicielstwo plików roota (`no_root_squash`):** Ta opcja powoduje, że pliki utworzone przez użytkownika root zachowują swoje pierwotne UID/GID równa 0, ignorując zasadę najmniejszych uprawnień i potencjalnie nadając nadmierne uprawnienia.
2024-02-08 21:36:15 +00:00
2024-02-11 01:46:25 +00:00
- **Brak tłumienia wszystkich użytkowników (`no_all_squash`):** Ta opcja zapewnia zachowanie tożsamości użytkowników w całym systemie, co może prowadzić do problemów z uprawnieniami i kontrolą dostępu, jeśli nie jest prawidłowo obsługiwana.
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
## Eskalacja uprawnień przy użyciu błędów konfiguracji NFS
2022-10-02 19:15:35 +00:00
2024-02-11 01:46:25 +00:00
[Eskalacja uprawnień przy użyciu błędów konfiguracji NFS no\_root\_squash i no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
2021-08-12 12:55:42 +00:00
2024-02-11 01:46:25 +00:00
## Automatyczne polecenia HackTricks
2022-05-01 13:25:53 +00:00
```
2021-08-12 12:55:42 +00:00
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
2021-08-15 17:39:13 +00:00
Entry_1:
2024-02-11 01:46:25 +00:00
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.
2021-08-15 17:39:13 +00:00
2024-02-11 01:46:25 +00:00
#apt install nfs-common
showmount 10.10.10.180 ~or~showmount -e 10.10.10.180
should show you available shares (example /home)
2024-02-11 01:46:25 +00:00
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
2021-08-12 12:55:42 +00:00
2024-02-11 01:46:25 +00:00
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
2021-08-12 12:55:42 +00:00
2021-08-15 17:39:13 +00:00
Entry_2:
2024-02-11 01:46:25 +00:00
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
2021-08-12 12:55:42 +00:00
```
2022-04-28 16:01:33 +00:00
<details>
2024-02-11 01:46:25 +00:00
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-11 01:46:25 +00:00
* Pracujesz w **firmie zajmującej się cyberbezpieczeństwem**? Chcesz zobaczyć swoją **firmę reklamowaną w HackTricks**? A może chcesz mieć dostęp do **najnowszej wersji PEASS lub pobrać HackTricks w formacie PDF**? Sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
* **Dołącz do** [**💬**](https://emojipedia.org/speech-balloon/) [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** mnie na **Twitterze** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do repozytorium [hacktricks](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>