Answers:
由于默认情况下对底层设备的访问仅受文件许可权控制,因此,如果您的USB记忆棒包含POSIX文件系统,且该设备的世界可写设备节点与系统中的真实设备相对应,则可以使用该设备节点来访问相应的设备设备作为“普通”用户。想象一下,与您的摄像头之一的音频设备相对应的设备/dev/sda
(这是块设备而不是字符设备,但自变量相同)...
这是使情况更清楚的示例。假设您要访问/dev/sda
(那么您几乎可以对磁盘的内容做任何您想做的事情,包括植入一个可以使您成为磁盘的程序root
;这是一个块设备,但字符设备也存在相同的问题)。在您的目标系统上,ls -l /dev/sda
显示
brw-rw---- 1 root disk 8, 0 Sep 8 11:25 sda
这意味着/dev/sda
是一个块设备(b
在行的开头),主要编号为8,次要编号为0(8, 0
位于行的中间)。该设备仅可访问root
(读/写)和disk
组成员(也可读/写)。
现在想象一下,在该系统上您将无法使用root
USB记忆棒,但由于某种原因,您可以不使用USB记忆棒来安装USB记忆棒nodev
。在您所在的其他系统上root
,您可以在USB闪存盘上创建相应的特殊文件:
mknod -m 666 usersda b 8 0
这将创建一个特殊文件usersda
,每个人都可以读取和写入。
将密钥安装在目标系统上,然后,您可以usersda
按照与相同的方式使用设备/dev/sda
,但没有访问限制...
(只要您能够访问解密的映射器设备,这将对加密的文件系统也有效:创建与相应/dev/mapper
条目匹配的设备。)
ls -l /dev
,它们是显示的两个数字,而不是文件大小。内核将设备专用文件与使用这些编号的驱动程序进行匹配,因此您可以有多个文件指向同一内核驱动程序和设备。特殊文件是使用创建的mknod
。
/dev/tty*
设备是字符设备,入侵者获得对您的终端会话和/或系统控制台的完全读/写访问权限,再加上滥用终端仿真器功能,可能会允许各种各样的令人讨厌的窍门...
usersda
,但是您至少可以使用它不受限制地从基础磁盘读取数据,也可以对其进行写入。您可以轻松地复制所有磁盘中的内容,并与工具,如debuge2fs
,重写/etc/shadow
等