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

148 lines
10 KiB
Markdown

# 2049 - Kupima Usalama wa Huduma ya NFS
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka mwanzo hadi kuwa bingwa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* Je, unafanya kazi katika **kampuni ya usalama wa mtandao**? Je, ungependa kuona **kampuni yako ikionekana katika HackTricks**? Au ungependa kupata ufikiaji wa **toleo jipya zaidi la PEASS au kupakua HackTricks kwa muundo wa PDF**? Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* **Jiunge na** [**💬**](https://emojipedia.org/speech-balloon/) [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **nifuatilie** kwenye **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye [repo ya hacktricks](https://github.com/carlospolop/hacktricks) na [repo ya hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>
## **Taarifa Msingi**
**NFS** ni mfumo ulioundwa kwa ajili ya **mteja/mtumishi** ambao huruhusu watumiaji kupata faili kwa urahisi kupitia mtandao kana kwamba faili hizo ziko katika saraka ya ndani.
Jambo muhimu kuhusu itifaki hii ni ukosefu wake wa **uthibitishaji** au **mifumo ya idhini** iliyojengwa ndani. Badala yake, idhini inategemea **taarifa za mfumo wa faili**, ambapo mtumishi anajukumu la kutafsiri kwa usahihi **taarifa za mtumiaji zinazotolewa na mteja** katika muundo unaohitajika wa **idhini wa mfumo wa faili**, kwa kufuata hasa **sintaksia ya UNIX**.
Uthibitishaji mara nyingi unategemea **kitambulisho cha `UID`/`GID` cha UNIX na uanachama wa kikundi**. Hata hivyo, changamoto inatokea kutokana na tofauti inayowezekana katika **ufanano wa `UID`/`GID`** kati ya wateja na watumishi, hivyo hakuna nafasi ya uthibitisho zaidi na mtumishi. Kwa hiyo, itifaki hii ni bora kutumika katika **mitandao ya kuaminika**, kutokana na kutegemea njia hii ya uthibitisho.
**Bandari ya chaguo-msingi**: 2049/TCP/UDP (isipokuwa toleo la 4, inahitaji TCP au UDP tu).&#x20;
```
2049/tcp open nfs 2-3 (RPC #100003
```
### Toleo
- **NFSv2**: Toleo hili linatambulika kwa uwezo wake mkubwa wa kufanya kazi na mifumo mbalimbali, na kwa kuanza kwa shughuli za awali zaidi kwa kutumia UDP. Kwa kuwa ni **toleo la zamani** katika mfululizo huu, lilianzisha msingi wa maendeleo ya baadaye.
- **NFSv3**: Ilianzishwa na maboresho mengi, NFSv3 iliongeza kwa kiasi kikubwa kwenye toleo lake la awali kwa kusaidia ukubwa tofauti wa faili na kutoa njia bora ya kuripoti makosa. Licha ya maendeleo yake, ilikabiliwa na vizuizi katika uwezo wake wa kurudisha nyuma kikamilifu kwa wateja wa NFSv2.
- **NFSv4**: Toleo muhimu katika mfululizo wa NFS, NFSv4 ilileta kwenye meza kipindi cha huduma zilizoundwa kuboresha ushirikiano wa kugawana faili kwenye mitandao. Maboresho muhimu ni pamoja na ujumuishaji wa Kerberos kwa ajili ya **usalama wa juu**, uwezo wa kuvuka kizuizi cha moto na kufanya kazi kupitia mtandao bila haja ya portmappers, usaidizi wa Orodha za Kudhibiti Upatikanaji (ACLs), na kuanzishwa kwa shughuli zinazotegemea hali. Uboreshaji wake wa utendaji na uchukuzi wa itifaki yenye hali unatambulisha NFSv4 kama maendeleo muhimu katika teknolojia za kugawana faili kwenye mitandao.
Kila toleo la NFS limeendelezwa kwa lengo la kukabiliana na mahitaji yanayobadilika ya mazingira ya mtandao, kwa kuimarisha usalama, uwezo wa kushirikiana, na utendaji.
## Uchambuzi
### Skrini za nmap zinazofaa
```bash
nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share
```
### Moduli muhimu ya metasploit
Metasploit ni chombo maarufu cha kufanya uchunguzi wa usalama na kufanya mashambulizi ya kudhibiti mfumo. Inatoa moduli nyingi ambazo zinaweza kutumiwa kwa ufanisi katika kufanya pentesting. Hapa kuna baadhi ya moduli muhimu za Metasploit:
- **exploit/multi/handler**: Moduli hii inaruhusu kuanzisha kusikiliza kwa kushughulikia mashambulizi ya kijijini. Inaweza kutumiwa kusikiliza kwa kushughulikia kwa itifaki mbalimbali kama vile HTTP, TCP, na UDP.
- **exploit**: Moduli hizi zinawezesha kufanya mashambulizi ya kudhibiti mfumo kwa kutumia udhaifu katika programu au itifaki. Kuna moduli nyingi za kipekee kwa udhaifu tofauti, kama vile **exploit/windows/smb/ms17_010_eternalblue** ambayo inatumika kwa kudhibiti mfumo wa Windows kupitia udhaifu wa EternalBlue.
- **auxiliary**: Moduli hizi zinatoa zana za ziada ambazo zinaweza kutumiwa katika mchakato wa pentesting. Kwa mfano, **auxiliary/scanner/portscan/tcp** inaweza kutumiwa kufanya uchunguzi wa bandari za TCP kwenye mfumo uliolengwa.
- **post**: Moduli hizi zinatoa zana za kufanya shughuli baada ya kuvamia mfumo. Kwa mfano, **post/multi/gather/enum_system** inaweza kutumiwa kukusanya habari kuhusu mfumo uliolengwa baada ya kuvamia.
- **payload**: Moduli hizi zinatoa aina tofauti za mizigo ambazo zinaweza kutumika kwa kudhibiti mfumo uliolengwa. Kwa mfano, **payload/linux/x86/shell_reverse_tcp** inatoa mizigo ya kudhibiti mfumo wa Linux kwa kutumia itifaki ya reverse TCP.
Moduli hizi ni baadhi tu ya zana zinazopatikana katika Metasploit. Kwa kuchunguza na kuelewa jinsi ya kutumia moduli hizi, unaweza kuwa na uwezo mkubwa wa kufanya pentesting kwa ufanisi.
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Kufunga
Ili kujua **folda ipi** inayopatikana kwa kufunga kwenye seva, unaweza kuuliza kwa kutumia:
```bash
showmount -e <IP>
```
Kisha ungana nayo kwa kutumia:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Unapaswa kufafanua kutumia **toleo 2** kwa sababu hakina **uthibitishaji** au **idhini** yoyote.
**Mfano:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
## Vibali
Ikiwa unafunga saraka ambayo ina **faili au saraka zinazopatikana tu na mtumiaji fulani** (kwa **UID**). Unaweza **kuunda** **mtumiaji** kwa kutumia **UID** hiyo na kwa kutumia **mtumiaji** huyo utaweza **kupata** faili/saraka.
## NSFShell
Ili kuorodhesha, kufunga na kubadilisha UID na GID ili kupata faili, unaweza kutumia [nfsshell](https://github.com/NetDirect/nfsshell).
[Tutorial nzuri ya NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
## Faili za Usanidi
```
/etc/exports
/etc/lib/nfs/etab
```
### Mipangilio hatari
- **Mipangilio ya Kusoma na Kuandika (`rw`):** Mipangilio hii inaruhusu kusoma na kuandika kwenye mfumo wa faili. Ni muhimu kuzingatia athari za kutoa upatikanaji mpana kama huo.
- **Matumizi ya Bandari Zisizo Salama (`insecure`):** Kukiwezeshwa, hii inaruhusu mfumo kutumia bandari zilizo juu ya 1024. Usalama wa bandari zilizo juu ya kikomo hiki unaweza kuwa dhaifu, kuongeza hatari.
- **Uonekano wa Mifumo ya Faili Iliyofichwa (`nohide`):** Mipangilio hii inafanya saraka kuonekana hata kama mfumo mwingine wa faili umefungwa chini ya saraka iliyosambazwa. Kila saraka inahitaji kuingizwa kwa kujitolea ili kusimamia vizuri.
- **Umiliki wa Faili za Mizizi (`no_root_squash`):** Kwa mipangilio hii, faili zilizoundwa na mtumiaji wa mizizi zinabaki na UID/GID yao ya asili ya 0, bila kuzingatia kanuni ya idadi ndogo ya ruhusa na huenda zikatoa ruhusa nyingi.
- **Kutowasukuma Watumiaji Wote (`no_all_squash`):** Chaguo hili linahakikisha utambulisho wa watumiaji unahifadhiwa kwenye mfumo, ambayo inaweza kusababisha masuala ya ruhusa na udhibiti wa upatikanaji ikiwa haitashughulikiwa kwa usahihi.
## Kupandisha Hadhi kwa Kutumia Mipangilio Mibovu ya NFS
[Kupandisha Hadhi kwa Kutumia Mipangilio Mibovu ya NFS ya no\_root\_squash na no\_all\_squash](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
## Amri za Kiotomatiki za 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}
```
<details>
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* Je, unafanya kazi katika **kampuni ya usalama wa mtandao**? Je, ungependa kuona **kampuni yako ikionekana katika HackTricks**? Au ungependa kupata ufikiaji wa **toleo jipya zaidi la PEASS au kupakua HackTricks kwa muundo wa PDF**? Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
* Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com)
* **Jiunge na** [**💬**](https://emojipedia.org/speech-balloon/) [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **nifuatilie** kwenye **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye [repo ya hacktricks](https://github.com/carlospolop/hacktricks) na [repo ya hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
</details>