tags: NFS enumerazione file_sharing Superenum Showmount RPCInfo RPC-Scan


NFS (Network File System) è un tipo di file system che consente agli utenti di computer di accedere, visualizzare, archiviare e aggiornare file su un server remoto. Questi dati remoti possono essere accessibili dal computer client nello stesso modo in cui vi si accede sul sistema locale.

Nmap

nmap -sV <Target IP Address>

sudo nmap --script nfs* 10.129.14.128 -sV -p111,2049
 
Starting Nmap 7.80 ( https://nmap.org ) at 2021-09-19 17:37 CEST
Nmap scan report for 10.129.14.128
Host is up (0.00021s latency).
 
PORT     STATE SERVICE VERSION
111/tcp  open  rpcbind 2-4 (RPC #100000)
| nfs-ls: Volume /mnt/nfs
|   access: Read Lookup NoModify NoExtend NoDelete NoExecute
| PERMISSION  UID    GID    SIZE  TIME                 FILENAME
| rwxrwxrwx   65534  65534  4096  2021-09-19T15:28:17  .
| ??????????  ?      ?      ?     ?                    ..
| rw-r--r--   0      0      1872  2021-09-19T15:27:42  id_rsa
| rw-r--r--   0      0      348   2021-09-19T15:28:17  id_rsa.pub
| rw-r--r--   0      0      0     2021-09-19T15:22:30  nfs.share
|_
| nfs-showmount: 
|_  /mnt/nfs 10.129.14.0/24
| nfs-statfs: 
|   Filesystem  1K-blocks   Used       Available   Use%  Maxfilesize  Maxlink
|_  /mnt/nfs    30313412.0  8074868.0  20675664.0  29%   16.0T        32000
| rpcinfo: 
|   program version    port/proto  service
|   100000  2,3,4        111/tcp   rpcbind
|   100000  2,3,4        111/udp   rpcbind
|   100000  3,4          111/tcp6  rpcbind
|   100000  3,4          111/udp6  rpcbind
|   100003  3           2049/udp   nfs
|   100003  3           2049/udp6  nfs
|   100003  3,4         2049/tcp   nfs
|   100003  3,4         2049/tcp6  nfs
|   100005  1,2,3      41982/udp6  mountd
|   100005  1,2,3      45837/tcp   mountd
|   100005  1,2,3      47217/tcp6  mountd
|   100005  1,2,3      58830/udp   mountd
|   100021  1,3,4      39542/udp   nlockmgr
|   100021  1,3,4      44629/tcp   nlockmgr
|   100021  1,3,4      45273/tcp6  nlockmgr
|   100021  1,3,4      47524/udp6  nlockmgr
|   100227  3           2049/tcp   nfs_acl
|   100227  3           2049/tcp6  nfs_acl
|   100227  3           2049/udp   nfs_acl
|_  100227  3           2049/udp6  nfs_acl
2049/tcp open  nfs_acl 3 (RPC #100227)
MAC Address: 00:00:00:00:00:00 (VMware)
 
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 0.45 seconds

Showmount

Tramite il seguente comando vediamo se è presente una cartella di condivisione:

 
showmount -e 10.129.14.128
 
Export list for 10.129.14.128:
/mnt/nfs 10.129.14.0/24
 

Se presente possiamo montare quella cartella sulla nostra macchina locale tramite i seguenti comandi:

Shiro1@htb[/htb]$ mkdir target-NFS
Shiro1@htb[/htb]$ sudo mount -t nfs 10.129.14.128:/ ./target-NFS/ -o nolock
Shiro1@htb[/htb]$ cd target-NFS
Shiro1@htb[/htb]$ tree .
 
.
└── mnt
    └── nfs
        ├── id_rsa
        ├── id_rsa.pub
        └── nfs.share
 
2 directories, 3 files

Le uniche cose che devi sostituire sono il nome della cartella sulla quale vuoi caricare la cartella remota in questo caso target-NFS e l’indirizzo IP della macchina remota in questo caso 10.129.14.128.

Se presente una cartella di condivisione possiamo anche provare a sfruttarla per ottenere una reverse shell, guarda questa pagina NFS Shell.

Dopo aver eseguito tutti i passaggi necessari e ottenuto le informazioni di cui abbiamo bisogno, possiamo smontare la condivisione NFS:

Shiro1@htb[/htb]$ cd ..
Shiro1@htb[/htb]$ sudo umount ./target-NFS

RPCInfo

Un modo semplice per vedere se il servizio NFS è attivo nella macchina possiamo utilizzare:

rpcinfo -p <indirizzo IP>

SuperEnum

SuperEnum è un tool che ci permette di enumerare facilmente il servizio NFS di una macchina, per utilizzarlo dobbiamo innanzitutto scaricarlo da questo sito github, poi va creato un file.txt con all’interno l’IP del target dentro la cartella nel quale è contenuto l’eseguibile e lo possiamo fare con il seguente comando:

echo "10.10.1.10" >> target.txt

Dopo aver creato il file possiamo lanciare il programma con:

./superenum

Ci chiederà quale file vogliamo scandagliare e noi gli metteremo il nome del file creato precedentemente.

RPC-Scan

Un altro tool che può sicuramente tornare utile è RPC-Scan che è ancora più semplice da utilizzare rispetto a superenum infatti ci basta scaricare il programma da questo sito poi dirigersi dentro la cartella del programma e lanciare il seguente comando:

python3 rpc-scan.py [Target IP address] --rpc