Como o acesso ao dispositivo subjacente é controlado apenas por permissões de arquivo por padrão, portanto, se o seu pendrive USB contiver um sistema de arquivos POSIX com um nó de dispositivo gravável em mundo correspondente a um dispositivo real no sistema, você poderá usar esse nó de dispositivo para acessar o correspondente dispositivo como um usuário "comum". Imagine um dispositivo correspondente a um dos dispositivos de áudio, sua webcam, /dev/sda
(que é um dispositivo de bloco em vez de um dispositivo de caracteres, mas o argumento é o mesmo) ...
Aqui está um exemplo para tornar as coisas mais claras. Digamos que você queira acessar /dev/sda
(então você pode praticamente fazer o que quiser com o conteúdo do disco, incluindo plantar um programa que permita que você se torne root
; este é um dispositivo de bloco, mas o problema é o mesmo com dispositivos de caracteres). No seu sistema de destino, ls -l /dev/sda
mostra
brw-rw---- 1 root disk 8, 0 Sep 8 11:25 sda
Isso significa que /dev/sda
é um dispositivo de bloco (o b
no início da linha), com o número principal 8 e o número menor 0 ( 8, 0
o meio da linha). O dispositivo está acessível apenas para root
(leitura / gravação) e membros do disk
grupo (também leitura / gravação).
Agora imagine neste sistema que você não pode se tornar, root
mas, por algum motivo, pode montar pen drives como usuário externo nodev
. Em outro sistema, onde você está root
, você pode criar um arquivo especial correspondente na sua chave USB:
mknod -m 666 usersda b 8 0
Isso criará um arquivo especial chamado usersda
, legível e gravável por todos.
Monte a chave no seu sistema de destino e, e pronto, você pode usar o usersda
dispositivo da mesma maneira que /dev/sda
, mas sem restrição de acesso ...
(Isso funcionará mesmo com sistemas de arquivos criptografados, desde que você possa acessar o dispositivo mapeador descriptografado: crie um dispositivo que corresponda à /dev/mapper
entrada apropriada .)
ls -l /dev
, são os dois números que aparecem em vez do tamanho do arquivo. O kernel combina um arquivo especial do dispositivo com um driver usando esses números, para que você possa ter vários arquivos que apontam para o mesmo driver e dispositivo do kernel. Os arquivos especiais são criados usandomknod
./dev/tty*
dispositivos são dispositivos de caracteres, e um invasor que obtém acesso total de leitura / gravação às sessões do terminal e / ou ao console do sistema combinado com os recursos de emulador de terminal abusivos pode permitir todos os tipos de truques desagradáveis ...usersda
, mas pelo menos pode usá-lo para ler o disco subjacente sem restrições e, possivelmente, gravar nele. Você pode copiar facilmente todo o conteúdo do disco e com ferramentas comodebuge2fs
sobrescrever/etc/shadow
etc.