GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum ist „nodev“ in /etc/fstab so wichtig? Wie können Charaktergeräte zum Hacken verwendet werden?

Ich lerne gerade etwas über Linux-Sicherheit und habe Mühe zu verstehen, warum ein USB-Stick mit einem Zeichengerät darauf potenziell gefährlich sein kann.

Wenn ich einen USB-Stick mit einer ausführbaren Bash-Datei habe, auf der sich setuid root befindet, ist die Gefahr offensichtlich:Jeder mit einem solchen USB-Stick kann Root-Rechte auf meinem Computer erlangen, wenn ich einen Eintrag wie

habe
/dev/sdb1 /media/usbstick auto defaults 0 0

in meiner /etc/fstab weil defaults enthält suid .

Aber was ist mit Zeichengeräten? Wie kann ich ein Zeichengerät verwenden, um Root-Privilegien zu erlangen oder Dinge zu beschädigen, wenn ein USB-Stick mit einem Zeichengerät darauf mit dev gemountet wird oder defaults ?

Akzeptierte Antwort:

Da der Zugriff auf das zugrunde liegende Gerät standardmäßig nur durch Dateiberechtigungen gesteuert wird. Wenn Ihr USB-Stick also ein POSIX-Dateisystem mit einem weltweit beschreibbaren Geräteknoten enthält, der einem realen Gerät im System entspricht, können Sie diesen Geräteknoten verwenden, um auf das entsprechende zuzugreifen Gerät als „einfacher“ Benutzer. Stellen Sie sich ein Gerät vor, das einem der Audiogeräte entspricht, Ihrer Webcam, /dev/sda (Das ist eher ein Blockgerät als ein Zeichengerät, aber das Argument ist das gleiche)…

Hier ist ein Beispiel, um die Dinge klarer zu machen. Angenommen, Sie möchten auf /dev/sda zugreifen (Dann können Sie mit dem Inhalt der Diskette so ziemlich alles machen, was Sie wollen, einschließlich des Einschleusens eines Programms, mit dem Sie root werden können; Dies ist ein Blockgerät, aber das Problem ist das gleiche wie bei Zeichengeräten). Auf Ihrem Zielsystem ls -l /dev/sda zeigt

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

Das bedeutet /dev/sda ist ein Blockgerät (das b am Anfang der Zeile), mit der Major-Nummer 8 und der Minor-Nummer 0 (die 8, 0). in der Mitte der Zeile). Das Gerät ist nur für root zugänglich (Lesen/Schreiben) und Mitglieder der disk Gruppe (auch lesen/schreiben).

Stellen Sie sich nun vor, Sie könnten auf diesem System nicht root werden aber aus irgendeinem Grund können Sie USB-Sticks als Benutzer ohne nodev mounten . Auf einem anderen System, auf dem Sie root sind , können Sie eine entsprechende spezielle Datei auf Ihrem USB-Stick erstellen:

mknod -m 666 usersda b 8 0

Dadurch wird eine spezielle Datei namens usersda erstellt , lesbar und beschreibbar für alle.

Mounten Sie den Schlüssel auf Ihrem Zielsystem und schwupps, Sie können die usersda verwenden device genauso wie /dev/sda , aber ohne Zugriffsbeschränkung…

Verwandt:Verwenden von uniq für Unicode-Text?

(Dies funktioniert sogar mit verschlüsselten Dateisystemen, solange Sie auf das entschlüsselte Mapper-Gerät zugreifen können:Erstellen Sie ein Gerät, das dem entsprechenden /dev/mapper entspricht Eintrag.)


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. So legen Sie JAVA_HOME in Linux für alle Benutzer fest

  3. So richten Sie passwortloses SSH mit RSA-Schlüsseln ein

  4. Wie kann ich ein chmod im etc-Verzeichnis zurücksetzen?

  5. Warum wird auf einigen Linux-Systemen das Root-Dateisystem als /dev/root statt als /dev/<realer Geräteknoten> in mtab angezeigt?

Was ist Fstab unter Linux | Eine Einführung in die Linux-Datei /etc/fstab

CentOS / RHEL 7 :So stellen Sie gelöschte Root-Einträge in /etc/shadow- und/oder /etc/passwd-Dateien wieder her

Wie kann ich die automatische Vervollständigung für Git-Befehle einrichten?

Warum haben die Verzeichnisse /home, /usr, /var usw. alle dieselbe Inode-Nummer (2)?

So richten Sie /etc/issues ein, um die IP-Adresse für eth0 anzuzeigen

Wie mache ich 'mount --bind' in /etc/fstab?