参考资料
https://baijiahao.baidu.com/s?id=1727594857858909253&wfr=spider&for=pc
https://blog.csdn.net/qq_36119192/article/details/84872644
http://www.hackdig.com/05/hack-351745.htm
什么是SUID
SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只针对二进制可执行文件,对于非可执行文件设置SUID没有任何意义。
在执行过程中,调用者会暂时获得该文件的所有者权限,且该权限只在程序执行的过程中有效. 通俗的来讲,假设我们现在有一个可执行文件ls,其属主为root,当我们通过非root用户登录时,如果ls设置了SUID权限,我们可在非root用户下运行该二进制可执行文件,在执行文件时,该进程的权限将为root权限。
利用此特性,我们可通过SUID进行提权。
设置SUID
在了解SUID提权以前 我们简单看一下如何设置SUID权限
chmod u+s filename 设置SUID位
chmod u-s filename 去掉SUID设置
通过root设置的具有SUID权限的二进制可执行文件提权
已知的可用来提权的linux可行性的文件列表如下:
- nmap
- vim
- find
- bash
- more
- less
- nano
- cp
- awk
以下命令可以发现系统上运行的所有SUID可执行文件
#以下命令将尝试查找具有root权限的SUID的文件,不同系统适用于不同的命令,一个一个试
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000-print2>/dev/null
find / -user root -perm -4000-exec ls -ldb {} \;