hacktricks/network-services-pentesting/nfs-service-pentesting.md
2024-02-10 13:11:20 +00:00

150 lines
10 KiB
Markdown

# 2049 - Pentestiranje NFS servisa
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **cybersecurity kompaniji**? Želite li da vidite **vašu kompaniju reklamiranu na HackTricks-u**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitter-u** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
## **Osnovne informacije**
**NFS** je sistem dizajniran za **klijent/server** koji omogućava korisnicima da na mreži pristupaju datotekama kao da se one nalaze u lokalnom direktorijumu.
Značajan aspekt ovog protokola je nedostatak ugrađenih **mekanizama za autentifikaciju** ili **autorizaciju**. Umesto toga, autorizacija se oslanja na **informacije o fajl sistemu**, pri čemu je server zadužen za tačno prevođenje **informacija o korisniku koje pruža klijent** u potrebni **format autorizacije** fajl sistema, uglavnom prateći **UNIX sintaksu**.
Autentifikacija se obično oslanja na **UNIX `UID`/`GID` identifikatore i članstvo u grupama**. Međutim, izazov se javlja zbog potencijalne neusklađenosti u **mapiranjima `UID`/`GID`** između klijenata i servera, ne ostavljajući prostora za dodatnu verifikaciju od strane servera. Stoga je protokol najbolje prilagođen za upotrebu unutar **poverenih mreža**, s obzirom na njegovu oslanjanje na ovaj metod autentifikacije.
**Podrazumevani port**: 2049/TCP/UDP (osim verzije 4, koja zahteva samo TCP ili UDP).&#x20;
```
2049/tcp open nfs 2-3 (RPC #100003
```
### Verzije
- **NFSv2**: Ova verzija je poznata po svojoj širokoj kompatibilnosti sa različitim sistemima, a njen značaj se ogleda u tome što su početne operacije uglavnom izvršavane preko UDP-a. Kao **najstarija** u seriji, postavila je temelje za budući razvoj.
- **NFSv3**: Uvedena sa nizom poboljšanja, NFSv3 je proširio svoje prethodnika podržavajući promenljive veličine fajlova i nudeći unapređeni mehanizam za prijavu grešaka. Uprkos svojim napredovanjima, suočavao se sa ograničenjima u potpunoj kompatibilnosti sa NFSv2 klijentima.
- **NFSv4**: Pionirska verzija u seriji NFS, NFSv4 je donela niz funkcionalnosti dizajniranih za modernizaciju deljenja fajlova preko mreže. Značajna poboljšanja uključuju integraciju Kerberosa za **visoku bezbednost**, mogućnost prolaska kroz firewall-ove i rad preko interneta bez potrebe za portmaperima, podršku za Access Control List (ACL) i uvođenje operacija zasnovanih na stanju. Njegova poboljšanja performansi i usvajanje protokola sa stanjem izdvajaju NFSv4 kao ključni napredak u tehnologijama deljenja fajlova preko mreže.
Svaka verzija NFS-a je razvijena sa namerom da se adresiraju evoluirajuće potrebe mrežnih okruženja, postepeno unapređujući bezbednost, kompatibilnost i performanse.
## Enumeracija
### Korisni nmap skriptovi
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
### Korisni metasploit moduli
Metasploit je moćan alat za testiranje penetracije koji pruža širok spektar modula za iskorišćavanje ranjivosti. Ovi moduli omogućavaju hakerima da automatizuju proces pronalaženja i iskorišćavanja ranjivosti u ciljnom sistemu. Evo nekoliko korisnih metasploit modula koji se mogu koristiti u testiranju penetracije:
- `exploit/multi/handler`: Ovaj modul omogućava hakerima da postave "ručni" iskorišćavač koji će osluškivati dolazne veze i preuzeti kontrolu nad ranjivim sistemom.
- `exploit/windows/smb/ms17_010_eternalblue`: Ovaj modul iskorišćava ranjivost EternalBlue u Windows SMB protokolu kako bi omogućio hakerima da izvrše udaljeni kod na ciljnom Windows sistemu.
- `exploit/linux/ftp/vsftpd_234_backdoor`: Ovaj modul iskorišćava ranjivost u vsftpd FTP serveru verzije 2.3.4 koja omogućava hakerima da dobiju udaljeni pristup sistemu.
- `exploit/multi/http/php_cgi_arg_injection`: Ovaj modul iskorišćava ranjivost u PHP CGI skriptama koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.
- `exploit/multi/misc/java_rmi_server`: Ovaj modul iskorišćava ranjivost u Java RMI serverima koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.
- `exploit/multi/browser/java_signed_applet`: Ovaj modul iskorišćava ranjivost u Java potpisanim appletima koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.
Ovi moduli su samo neki od mnogih dostupnih u Metasploit okruženju. Hakeri mogu koristiti ove module kao deo svoje strategije testiranja penetracije kako bi identifikovali i iskoristili ranjivosti u ciljnom sistemu.
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Montiranje
Da biste saznali **koji folder** na serveru je **dostupan** za montiranje, možete ga pitati koristeći:
```bash
showmount -e <IP>
```
Zatim ga montirajte koristeći:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Treba da specificirate da **koristite verziju 2** jer ona nema **nikakvu** **autentifikaciju** ili **autorizaciju**.
**Primer:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## Dozvole
Ako montirate fasciklu koja sadrži **datoteke ili fascikle kojima je pristup dozvoljen samo određenom korisniku** (preko **UID**-a), možete **lokalno kreirati** korisnika sa tim **UID**-om i koristiti tog korisnika da biste **pristupili** datoteci/fascikli.
## NSFShell
Da biste lako izlistali, montirali i promenili UID i GID kako biste imali pristup datotekama, možete koristiti [nfsshell](https://github.com/NetDirect/nfsshell).
[Lepe uputstva za korišćenje NFSShell-a.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Konfiguracione datoteke
```
/etc/exports
/etc/lib/nfs/etab
```
### Opasne postavke
- **Dozvole za čitanje i pisanje (`rw`):** Ova postavka omogućava i čitanje i pisanje u fajl sistem. Važno je razmotriti posledice davanja tako široke pristupne dozvole.
- **Korišćenje nesigurnih portova (`insecure`):** Kada je omogućeno, ovo omogućava sistemu da koristi portove iznad 1024. Sigurnost portova iznad ove opsega može biti manje stroga, povećavajući rizik.
- **Vidljivost ugnježdenih fajl sistema (`nohide`):** Ova konfiguracija čini direktorijume vidljivim čak i ako je drugi fajl sistem montiran ispod izvezenog direktorijuma. Svaki direktorijum zahteva svoj sopstveni unos za izvoz radi pravilnog upravljanja.
- **Vlasništvo fajlova od strane korisnika root (`no_root_squash`):** Sa ovom postavkom, fajlovi kreirani od strane korisnika root zadržavaju svoj originalni UID/GID od 0, ignorirajući princip najmanjih privilegija i potencijalno dodeljujući prekomerne dozvole.
- **Nesquashing svih korisnika (`no_all_squash`):** Ova opcija obezbeđuje da se identiteti korisnika očuvaju u celom sistemu, što može dovesti do problema sa dozvolama i kontrolom pristupa ako se ne rukuje ispravno.
## Eskalacija privilegija korišćenjem loše konfigurisanih NFS-a
[NFS no\_root\_squash i no\_all\_squash eskalacija privilegija](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
## HackTricks Automatske Komande
```
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}
```
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Da li radite u **cybersecurity kompaniji**? Želite li da vidite svoju **kompaniju reklamiranu na HackTricks-u**? Ili želite da imate pristup **najnovijoj verziji PEASS-a ili preuzmete HackTricks u PDF formatu**? Proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* **Pridružite se** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili me **pratite** na **Twitter-u** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na [hacktricks repo](https://github.com/carlospolop/hacktricks) i [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)**.
</details>