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
方便了操作,但有些时候,也带了很多问题,这些在靶机中就遇见的太多太多了,我就不列举 了。