Linux中SUID許可權解讀
- 2020 年 3 月 6 日
- 筆記

saulGoodman
一個專註於紅隊攻防研究的公眾號
關注
Linux中SUID許可權解讀
做靶機的時候經常要通過Suid提權,例如使用命令:
find / -user root -perm -4000 -print 2>/dev/null find / type f -perm -u=s 2>/dev/null
那到底什麼是Suid呢?看下面操作:
我們先創建一個普通用戶,並為其創建一個初始密碼:
useradd -d /home/test/ -s /bin/bash test

現在我們就要開始說這個Suid許可權了。我們創建了一個test帳號,一個帳號最基本的功能就是給自己修改密碼。在linux中,修改密碼的命令為passwd
。但是,passwd
命令默認只有root用戶才可以使用。那既然這樣,普通用戶該如何修改自己的許可權呢。這時,便需要Set Uid
許可權了,簡稱SUID許可權。
SUID許可權的基本功能:
·SUID許可權僅對二進位程式有效。
·執行者對該程式具有x的可執行許可權,才可利用SUID許可權。
·此許可權僅在執行該程式的過程中有效。
·執行者講具有程式擁有者的許可權。
現在我們看一下passwd
命令,該命令位於/usr/bin/
目錄下,是一個二進位程式

發現此命令並沒有SUID許可權(SUID許可權的符號是s
,位於程式擁有者的x
許可權上)。
那我們現在切換到test用戶,看看在沒有SUID許可權的情況下,是否可以修改密碼:

可以看到鑒定令牌錯誤,我們沒用許可權進行修改密碼的操作。
那我們現在為passwd
命令賦予SUID許可權,看看效果會怎樣:
chmod u+s /usr/bin/passwd #為passwd命令賦予SUID許可權

由圖中看到,passwd
許可權變為-rwsr-xr-x
,擁有者為root用戶,且擁有者的x
許可權已經變為s
。
看到這裡應該就清楚了,利用SUID
的前提是當前用戶可執行該SUID
許可權的程式,擁有執行權。並且該」不屬於自身許可權」的許可權僅在執行該程式的過程中有效,不可跨程式執行,這也便是SUID
許可權的局限性。
雖然SUID
方便了操作,但有些時候,也帶了很多問題,這些在靶機中就遇見的太多太多了,我就不列舉 了。