為什麼 /etc/fstab 中的“nodev”如此重要?字元設備如何用於黑客攻擊?
我正在學習 linux 安全性並努力理解為什麼帶有字元設備的 USB 記憶棒具有潛在危險。
如果我有一個帶有帶有 setuid root 的 bash 執行檔的 USB 記憶棒,那麼危險是顯而易見的:如果我有類似
/dev/sdb1 /media/usbstick auto defaults 0 0
在我的
/etc/fstab
因為defaults
包括suid
.但是字元設備呢?
dev
如果帶有字元設備的 USB 記憶棒安裝了or ,我如何使用字元設備來獲得 root 權限或破壞東西defaults
?
因為對底層設備的訪問預設只受文件權限控制,所以如果你的 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
但由於某種原因你可以作為沒有nodev
. 在您所在的另一個系統上root
,您可以在 USB 密鑰上創建相應的特殊文件:mknod -m 666 usersda b 8 0
這將創建一個名為 的特殊文件
usersda
,每個人都可以讀寫。在您的目標系統上安裝密鑰,嘿,您可以
usersda
以與 相同的方式使用該設備/dev/sda
,但沒有訪問限制……(這甚至適用於加密的文件系統,只要您能夠訪問解密的映射器設備:創建與相應
/dev/mapper
條目匹配的設備。)