出於書本 Chapter 11. Linux
網路檔案系統 (Network File System) 是用來從本地端掛載遠端檔案系統。由於遠端存取的這項天生特性,的確也有可能就這樣分享給駭客。架設 NFS 的時,若將主要的設定欓 /etc/exports
裡的內容設定成 整個世界
都能讀取 整座檔案系統
,例如在 /etc/exports
裡設定
# 汗
/ rw
對駭客來說,很容易就獲得遠端存取的權限,並且對系統做操作。
當然啦!除了設定欓之外,下面的條件都符合才會遭成威脅:
portmap
服務綁定 NFS 給 RPC/etc/hosts.allow
檔案裡遠端掛載的東西很容易因為誤解而被設置錯誤,進而讓有心人士獲得遠端存取的能力。
/etc/exports
與 /etc/hosts.allow
都有妥善被設定在 Linux 中,透過設定檔案特殊的類型,來允許程式以檔案擁有者的權限執行:
SetUID ( 用於使用者 ID)
SetGID ( 用於 group ID)
查看檔案是否有 setuid 及 setgid 權限可以使用 ls
[1] ,像是
其中 -rws
的小寫 s
就代表有 setuid
權限,如果看到大寫 S
則代表有 setgid
權限。這樣描述起來很危險,但像是上圖舉例的 passwd
就確實需要 setuid 來解決。
一旦有惡意檔案是使用 root 權限來執行,是很容易被隱藏的。駭客或惡意使用者能夠編寫帶有 setuid
或 setgid
程式破壞系統。
# 找出有設定成 setuid 類型的檔案
find / -perm -4000 -print
# 找出有設定成 setgid 類型的檔案
find / -perm -2000 -print
# 找出能被任何人讀取的檔案
find / -perm -2 type f -print
# 找出隱藏檔案
find / -name ".*"
change-detection
的稽核用程式,當這些被設定有 setuid 或 setgid 的檔案被修改時要能發出告警。飛快告別這本書的第四個部分,明天將進入第五個部分 Hacking Application
,從網站與應用程式的攻擊研讀起~
[1] Linux 設定 setuid 及 setgid 權限