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目录

image

(2)利用冰蝎进行连接,如图连接成功

image

(3)攻击机打开msf,进行监听设置

image

(4)冰蝎反弹shell,设置好攻击机IP地址和端口,选中Metepreter点击连接

image

(5)如图监听到反弹shell,查看权限,成功获得网站权限
image

2.提升至root权限

(1)进入shell会话,输入上文提到的SUID可执行文件查找命令
find / -user root -perm -4000 -print 2>/dev/null
如图查到find

image

(2)进入tmp目录,创建名为“111”的文件

image

(3)执行命令,如图当前为root权限
借find命令的“-exec”参数执行命令“whoami”,确定执行“find”时为root权限
find 111 -exec whoami \;

image

三、总结

尽管 SUID 在 Linux 系统中是执行日常操作所必需的,并且通常对系统管理员有用,以允许普通用户执行某些二进制文件或命令,但它可能会带来巨大的安全风险。

SUID 权限不应应用于任何能够执行代码或命令、读/写文件或创建服务的二进制文件。

posted @ 2022-07-09 16:15  leviathan123  阅读(1613)  评论(0编辑  收藏  举报