8.6 KiB
2049 - Pentesting NFS Service
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Podstawowe informacje
NFS to system zaprojektowany dla klient/serwer, który umożliwia użytkownikom bezproblemowy dostęp do plików w sieci, jakby te pliki znajdowały się w lokalnym katalogu.
Ciekawym aspektem tego protokołu jest brak wbudowanych mechanizmów uwierzytelniania lub autoryzacji. Zamiast tego, autoryzacja opiera się na informacjach o systemie plików, a serwer ma za zadanie dokładnie przetłumaczyć dostarczone przez klienta informacje o użytkowniku na wymagany przez system plików format autoryzacji, głównie zgodnie z składnią UNIX.
Uwierzytelnianie zazwyczaj opiera się na identyfikatorach UID
/GID
UNIX i członkostwie w grupach. Jednakże, pojawia się problem z potencjalnym niedopasowaniem w mapowaniach UID
/GID
między klientami a serwerami, co nie pozostawia miejsca na dodatkową weryfikację przez serwer. W związku z tym, protokół najlepiej nadaje się do użycia w zaufanych sieciach, biorąc pod uwagę jego poleganie na tej metodzie uwierzytelniania.
Domyślny port: 2049/TCP/UDP (z wyjątkiem wersji 4, potrzebuje tylko TCP lub UDP).
2049/tcp open nfs 2-3 (RPC #100003
Wersje
-
NFSv2: Ta wersja jest znana z szerokiej kompatybilności z różnymi systemami, co podkreśla jej znaczenie w początkowych operacjach głównie przez UDP. Jako najstarsza w serii, położyła fundamenty pod przyszłe rozwój.
-
NFSv3: Wprowadzona z szeregiem ulepszeń, NFSv3 rozszerzyła możliwości swojego poprzednika, wspierając zmienne rozmiary plików i oferując ulepszone mechanizmy raportowania błędów. Pomimo swoich postępów, napotkała ograniczenia w pełnej kompatybilności wstecznej z klientami NFSv2.
-
NFSv4: Kamień milowy w serii NFS, NFSv4 wprowadził zestaw funkcji zaprojektowanych w celu unowocześnienia udostępniania plików w sieciach. Znaczące ulepszenia obejmują integrację Kerberos dla wysokiego bezpieczeństwa, zdolność do przechodzenia przez zapory i działania przez Internet bez potrzeby korzystania z portmapperów, wsparcie dla list kontroli dostępu (ACL) oraz wprowadzenie operacji opartych na stanie. Ulepszenia wydajności i przyjęcie protokołu opartego na stanie wyróżniają NFSv4 jako kluczowy postęp w technologiach udostępniania plików w sieci.
Każda wersja NFS została opracowana z zamiarem zaspokojenia ewoluujących potrzeb środowisk sieciowych, stopniowo poprawiając bezpieczeństwo, kompatybilność i wydajność.
Enumeracja
Użyteczne skrypty nmap
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
Przydatne moduły metasploit
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
Montowanie
Aby dowiedzieć się, który folder jest dostępny na serwerze do zamontowania, możesz zapytać go używając:
showmount -e <IP>
Następnie zamontuj to używając:
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
Powinieneś określić, aby używać wersji 2, ponieważ nie ma żadnej autoryzacji ani uwierzytelniania.
Przykład:
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
Uprawnienia
Jeśli zamontujesz folder, który zawiera pliki lub foldery dostępne tylko dla niektórego użytkownika (według UID). Możesz utworzyć lokalnie użytkownika z tym UID i używając tego użytkownika będziesz mógł uzyskać dostęp do pliku/folderu.
NSFShell
Aby łatwo wylistować, zamontować i zmienić UID oraz GID, aby uzyskać dostęp do plików, możesz użyć nfsshell.
Pliki konfiguracyjne
/etc/exports
/etc/lib/nfs/etab
Niebezpieczne ustawienia
-
Uprawnienia do odczytu i zapisu (
rw
): To ustawienie pozwala na zarówno odczyt, jak i zapis w systemie plików. Ważne jest, aby rozważyć konsekwencje przyznawania tak szerokiego dostępu. -
Użycie niebezpiecznych portów (
insecure
): Po włączeniu, to pozwala systemowi na korzystanie z portów powyżej 1024. Bezpieczeństwo portów powyżej tego zakresu może być mniej rygorystyczne, co zwiększa ryzyko. -
Widoczność zagnieżdżonych systemów plików (
nohide
): Ta konfiguracja sprawia, że katalogi są widoczne, nawet jeśli inny system plików jest zamontowany poniżej eksportowanego katalogu. Każdy katalog wymaga własnego wpisu eksportu dla prawidłowego zarządzania. -
Własność plików root (
no_root_squash
): Przy tym ustawieniu pliki tworzone przez użytkownika root zachowują swój oryginalny UID/GID równy 0, ignorując zasadę najmniejszych uprawnień i potencjalnie przyznając nadmierne uprawnienia. -
Brak zbijania wszystkich użytkowników (
no_all_squash
): Ta opcja zapewnia, że tożsamości użytkowników są zachowywane w całym systemie, co może prowadzić do problemów z uprawnieniami i kontrolą dostępu, jeśli nie jest odpowiednio obsługiwane.
Eskalacja uprawnień przy użyciu błędnych konfiguracji NFS
NFS no_root_squash i no_all_squash eskalacja uprawnień
HackTricks Automatyczne Komendy
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}
{% hint style="success" %}
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na GitHubie.