为什么 /etc/fstab 中的“nodev”如此重要?如何利用字符设备进行黑客攻击?

为什么 /etc/fstab 中的“nodev”如此重要?如何利用字符设备进行黑客攻击?

我正在学习 Linux 安全性,并努力理解为什么带有字符设备的 USB 记忆棒具有潜在危险。

如果我有一个带有 bash 可执行文件且具有 setuid root 的 USB 记忆棒,那么危险是显而易见的:如果我有类似这样的条目,任何拥有此类 USB 记忆棒的人都可以在我的计算机上获得 root 权限。

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

在我的/etc/fstab因为defaults包括suid

但是字符设备呢?如果带有字符设备的 USB 记忆棒安装有dev或,如何使用字符设备获得 root 权限或破坏内容defaults

答案1

因为默认情况下对底层设备的访问仅由文件权限控制,所以如果您的 U 盘包含 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 记忆棒,而无需nodev.在您所在的另一个系统上root,您可以在 USB 密钥上创建相应的特殊文件:

mknod -m 666 usersda b 8 0

这将创建一个名为 的特殊文件usersda,每个人都可读可写。

将密钥安装到您的目标系统上,嘿,很快,您就可以usersda以与 相同的方式使用该设备/dev/sda,但没有访问限制...

(即使使用加密的文件系统,只要您能够访问解密的映射器设备,这也适用:创建与适当条目匹配的设备/dev/mapper。)

相关内容