GNU/Linux >> Tutoriels Linux >  >> Linux

Pourquoi « nodev » dans /etc/fstab est-il si important ? Comment utiliser les périphériques de caractères pour le piratage ?

J'apprends la sécurité sous Linux et j'ai du mal à comprendre pourquoi une clé USB contenant un périphérique de caractères est potentiellement dangereuse.

Si j'ai une clé USB avec un exécutable bash qui a une racine setuid dessus, le danger est évident :n'importe qui avec une telle clé USB peut obtenir des privilèges root sur mon ordinateur si j'ai une entrée comme

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

dans mon /etc/fstab parce que defaults inclut suid .

Mais qu'en est-il des appareils de caractères? Comment puis-je utiliser un périphérique de caractère pour obtenir des privilèges root ou casser des choses si une clé USB avec un périphérique de caractère dessus est montée avec dev ou defaults ?

Réponse acceptée :

Étant donné que l'accès au périphérique sous-jacent est contrôlé uniquement par les autorisations de fichier par défaut, donc si votre clé USB contient un système de fichiers POSIX avec un nœud de périphérique inscriptible par le monde correspondant à un périphérique réel dans le système, vous pouvez utiliser ce nœud de périphérique pour accéder au correspondant. appareil en tant qu'utilisateur "ordinaire". Imaginez un appareil correspondant à l'un des appareils audio, votre webcam, /dev/sda (qui est un périphérique bloc plutôt qu'un périphérique caractère, mais l'argument est le même)…

Voici un exemple pour clarifier les choses. Disons que vous voulez accéder à /dev/sda (alors vous pouvez faire à peu près tout ce que vous voulez avec le contenu du disque, y compris planter un programme qui vous permettrait de devenir root; c'est un périphérique bloc mais le problème est le même avec les périphériques caractère). Sur votre système cible, ls -l /dev/sda montre

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

Cela signifie /dev/sda est un périphérique bloc (le b en début de ligne), avec le chiffre majeur 8 et le chiffre mineur 0 (le 8, 0 au milieu de la ligne). L'appareil n'est accessible qu'à root (lecture/écriture) et membres du disk groupe (également en lecture/écriture).

Imaginez maintenant sur ce système que vous ne pouvez pas devenir root mais pour une raison quelconque, vous pouvez monter des clés USB en tant qu'utilisateur sans nodev . Sur un autre système, où vous êtes root , vous pouvez créer un fichier spécial correspondant sur votre clé USB :

mknod -m 666 usersda b 8 0

Cela créera un fichier spécial appelé usersda , lisible et inscriptible par tous.

Montez la clé sur votre système cible et hop, vous pouvez utiliser le usersda périphérique de la même manière que /dev/sda , mais sans restriction d'accès…

Connexe :Utiliser uniq sur du texte unicode ?

(Cela fonctionnera même avec les systèmes de fichiers cryptés, tant que vous pourrez accéder au périphérique de mappage décrypté :créez un périphérique qui correspond au /dev/mapper approprié entrée.)


Linux
  1. Linux :Comment trouver le pilote de périphérique utilisé pour un périphérique ?

  2. Comment désactiver complètement un Cronjob vers /dev/null/?

  3. Comment /etc/motd est-il mis à jour ?

  4. Comment mapper les périphériques /dev/sdX et /dev/mapper/mpathY à partir du périphérique /dev/dm-Z

  5. Comment surveiller les modifications des fichiers /etc/shadow et /etc/passwd avec Auditd ?

Qu'est-ce que Fstab sous Linux | Une introduction au fichier Linux /etc/fstab

Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

CentOS / RHEL 7 :Comment récupérer à partir d'une entrée root supprimée dans les fichiers /etc/shadow et/ou /etc/passwd

Pourquoi sur certains systèmes Linux, le système de fichiers racine apparaît-il comme /dev/root au lieu de /dev/<real device node> dans mtab ?

Comment configurer /etc/issues pour afficher l'adresse IP pour eth0

Comment faire 'mount --bind' dans /etc/fstab ?