一、suid 特殊权限
操作对象: /etc/shadow 存放用户密码的文件
[root@oldboy /]# ls /etc/shadow -l
----------. 1 root root 1240 8月 31 01:36 /etc/shadow #没有权限
[root@oldboy ~]# md5sum /etc/shadow #做指纹
31d2d9e77650c8bd5a62b3ba88d48b1f /etc/shadow
[oldboy@oldboy ~]$ whoami
oldboy
[oldboy@oldboy ~]$ passwd #修改了/etc/shadow
更改用户 oldboy 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@oldboy ~]# md5sum /etc/shadow
9b20feb1326830523f02d505edab451d /etc/shadow #与前面的md5不一样,说明文件里已经改了
问题:oldboy用户使用passwd命令修改密码===改的文件/etc/shadow
因为/etc/shadow没有任何权限,所以oldboy使用passwd命令理论上没有办法修改/etc/shadow
而实际上确修改了,为什么呢?
答案:问题出在passwd命令身上,这个命令被设置了特殊权限位(suid)。
suid作用
1.针对二进制命令。(面向的对象是二进制命令)
2.给passwd命令设置了suid,则任何用户执行passwd命令都会拥有和passwd命令对应的用户的权限
[root@oldboy ~]# ls -l /usr/bin/passwd
-rwsr-xr-x. 1 root root 27856 4月 1 2020 /usr/bin/passwd
解析:pssswd命令在 /usr/bin/passwd目录下, /usr/bin/passwd目录对应的用户是root。即所有用户在执行passwd命令的时候都会获得root用户权限(rws)。
权限位
普通权限:9位 前三位 中三位 后三位
特殊权限:3位
suid:用户
前三位中用户位的x位:S s(x) #用户位原来没有x的时候,是S;用户位原来有x的时候,用s代替x。
s 4
sgid:用户组
中三位中用户组位的x位:S s(x)
s 2
粘滞位: /tmp(应用:/tmp里面的文件可以动,但是/tmp本身不能动)
后三位中其他用户位:x位:T t(x)
t 1
二、实例应用
1)需求 oldboy用户无法删除文件,需要给rm命令增加s权限,需要在rm命令目录文件上增加s.
[root@oldboy ~]# chmod 4755 `which rm`
[root@oldboy ~]# ls -l `which rm`
-rwsr-xr-x. 1 root root 62872 8月 20 2019 /usr/bin/rm
或者
[root@oldboy ~]# chmod u+s `which rm`
[root@oldboy ~]# ls -l `which rm`
-rwsr-xr-x. 1 root root 62872 8月 20 2019 /usr/bin/rm
[root@oldboy /]# ls -l /bin/rm
-rwsr-xr-x. 1 root root 62872 8月 20 2019 /bin/rm
工作中绝对不能用suid提权,特别是本身有危害的命令:
passwd命令属于绿色无害命令
rm,vim,cat都是有害命令,防不胜防
2)test用户通过设置了suid的vim命令提权到root实践:
1.chmod u+s /bin/vim #必须root用户下
2.vim /etc/sudoers #vim /etc/sudoers==visudo,在test用户下
test ALL=(ALL) NOPASSWD:ALL
3.sudo su - root #切到root
3)利用cat命令被设置suid漏洞,提权到root权限
chmod u+s /bin/cat #企业人员设置
注意提前备份/etc/sudoers,否则可能操作不当破坏sudoers文件
[root@oldboy ~]# cat >>/etc/sudoers #先回车再输入内容
test ALL=(ALL) ALL
[root@oldboy ~]# tail -1 /etc/sudoers
test ALL=(ALL) ALL
sudo su - root #在text用户下执行