GNU/Linux >> Linux Esercitazione >  >> Linux

Perché "nodev" in /etc/fstab è così importante? Come utilizzare i dispositivi di caratteri per l'hacking?

Sto imparando a conoscere la sicurezza di Linux e faccio fatica a capire perché una chiavetta USB con un dispositivo di caratteri sia potenzialmente pericolosa.

Se ho una chiavetta USB con un eseguibile bash con root setuid, il pericolo è ovvio:chiunque abbia una chiavetta USB del genere può ottenere i privilegi di root sul mio computer se ho una voce come

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

nel mio /etc/fstab perché defaults include suid .

Ma per quanto riguarda i dispositivi dei personaggi? Come posso usare un dispositivo di caratteri per ottenere i privilegi di root o rompere cose se una chiavetta USB con un dispositivo di caratteri viene montata con dev o defaults ?

Risposta accettata:

Poiché l'accesso al dispositivo sottostante è controllato solo dai permessi dei file per impostazione predefinita, quindi se la tua chiavetta USB contiene un filesystem POSIX con un nodo dispositivo scrivibile da tutto il mondo corrispondente a un dispositivo reale nel sistema, puoi usare quel nodo dispositivo per accedere al corrispondente dispositivo come utente "normale". Immagina un dispositivo corrispondente a uno dei dispositivi audio, la tua webcam, /dev/sda (che è un dispositivo a blocchi piuttosto che un dispositivo a caratteri, ma l'argomento è lo stesso)...

Ecco un esempio per rendere le cose più chiare. Supponi di voler accedere a /dev/sda (quindi puoi praticamente fare tutto ciò che vuoi con il contenuto del disco, incluso creare un programma che ti permetta di diventare root; questo è un dispositivo a blocchi ma il problema è lo stesso con i dispositivi a caratteri). Sul tuo sistema di destinazione, ls -l /dev/sda mostra

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

Questo significa /dev/sda è un dispositivo a blocchi (il b all'inizio della riga), con il numero maggiore 8 e il numero minore 0 (il 8, 0 al centro della linea). Il dispositivo è accessibile solo a root (lettura/scrittura) e membri del disk gruppo (anche lettura/scrittura).

Ora immagina che su questo sistema non puoi diventare root ma per qualche motivo puoi montare chiavette USB come utente senza nodev . Su un altro sistema, dove sei root , puoi creare un file speciale corrispondente sulla tua chiavetta USB:

mknod -m 666 usersda b 8 0

Questo creerà un file speciale chiamato usersda , leggibile e scrivibile da tutti.

Monta la chiave sul tuo sistema di destinazione e presto, puoi usare usersda dispositivo allo stesso modo di /dev/sda , ma senza restrizioni di accesso...

Correlati:utilizzo di uniq su testo unicode?

(Funzionerà anche con file system crittografati, purché tu sia in grado di accedere al dispositivo di mappatura decrittografato:crea un dispositivo che corrisponda al /dev/mapper appropriato voce.)


Linux
  1. Linux:come trovare il driver di dispositivo utilizzato per un dispositivo?

  2. Come silenziare completamente un Cronjob in /dev/null/?

  3. Come viene aggiornato /etc/motd?

  4. Come mappare il dispositivo /dev/sdX e /dev/mapper/mpathY dal dispositivo /dev/dm-Z

  5. Come monitorare i file /etc/shadow e /etc/passwd per le modifiche con Auditd?

Che cos'è Fstab in Linux | Un'introduzione al file /etc/fstab di Linux

CentOS / RHEL 7:come recuperare dalla voce di root eliminata nei file /etc/shadow e/o /etc/passwd

Come posso ripristinare un chmod nella directory etc?

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

A cosa serve `/dev/console`?

Come faccio a 'mount --bind' in /etc/fstab?