SUID提权总结及利用演示
一、介绍
1.SUID介绍:SUID (Set User ID) 是赋予文件的一种权限,允许用户以其所有者的权限执行文件。
2.SUID目的:让本来没有相应权限的用户运行这个程序时,可以访问他没有权限访问的资源。
3.设置SUID:
chmod u+s filename
设置SUID位
chmod u-s filename
去掉SUID设置
4.SUID提权的原理:运行root用户所拥有的SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了。
可以允许提权的已知 Linux 可执行文件有:
- Nmap
- Vim
- find
- Bash
- More
- Less
- Nano
- cp
以上文件的提权操作:参考文章> https://pentestlab.blog/2017/09/25/suid-executables/
5.查看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 {} \;
以上任意一条均可查看
二、演示
演示环境:
本次演示,在靶机事先执行chmod u+s /usr/bin/find
命令,给find文件添加SUID,攻击机利用find文件将获得的网站权限提升至root权限
攻击机:阿里云服务器 装有msf的ubuntu系统 IP地址:101.xxx.xxx.xxx
靶机:腾讯云服务器 装有Apache和PHP7.4环境的ubuntu系统 IP地址:49.xxx.xxx.xxx
1.获取网站权限
(1)上传shell.php,打开冰蝎,上传其自带的PHP马至靶机的/var/www/html目录
(2)利用冰蝎进行连接,如图连接成功
(3)攻击机打开msf,进行监听设置
(4)冰蝎反弹shell,设置好攻击机IP地址和端口,选中Metepreter点击连接
(5)如图监听到反弹shell,查看权限,成功获得网站权限
2.提升至root权限
(1)进入shell会话,输入上文提到的SUID可执行文件查找命令
find / -user root -perm -4000 -print 2>/dev/null
如图查到find
(2)进入tmp目录,创建名为“111”的文件
(3)执行命令,如图当前为root权限
借find命令的“-exec”参数执行命令“whoami”,确定执行“find”时为root权限
find 111 -exec whoami \;
三、总结
尽管 SUID 在 Linux 系统中是执行日常操作所必需的,并且通常对系统管理员有用,以允许普通用户执行某些二进制文件或命令,但它可能会带来巨大的安全风险。
SUID 权限不应应用于任何能够执行代码或命令、读/写文件或创建服务的二进制文件。