Étant donné que l'accès au périphérique sous-jacent n'est contrôlé que 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 accessible en écriture correspondant à un véritable périphérique du 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 appareil bloc plutôt qu'un appareil caractère, mais l'argument est le même) ...
Voici un exemple pour clarifier les choses. Disons que vous voulez accéder /dev/sda
(vous pouvez alors faire à peu près tout ce que vous voulez avec le contenu du disque, y compris planter un programme qui vous permettrait de le devenir root
; c'est un périphérique de bloc mais le problème est le même avec les périphériques de caractères). Sur votre système cible, ls -l /dev/sda
affiche
brw-rw---- 1 root disk 8, 0 Sep 8 11:25 sda
Cela signifie qu'il /dev/sda
s'agit d'un périphérique bloc (le b
au début de la ligne), avec le numéro majeur 8 et le numéro mineur 0 (le 8, 0
au milieu de la ligne). L'appareil n'est accessible qu'aux root
(lecture / écriture) et aux 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 tout le monde.
Montez la clé sur votre système cible et hé hop, vous pouvez utiliser l' usersda
appareil de la même manière que /dev/sda
, mais sans restriction d'accès ...
(Cela fonctionnera même avec les systèmes de fichiers cryptés, tant que vous êtes en mesure d'accéder au périphérique de mappage décrypté: créez un périphérique qui correspond à l' /dev/mapper
entrée appropriée .)