Linux中SUID权限解读

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