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…
(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.)