Linux提权之PATH环境变量(译文)

译文声明:

本文为翻译文章,原文地址:http://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/

介绍

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

查看当前用户的PATH:

echo $PATH

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

如果PATH中出现了”.”,则表明当前用户可以执行当前目录中的二进制文件/脚本文件,对于攻击者来说,这可能是一个很好的提权技术。这是因为管理员在编写程序时缺乏注意 ,没有指定程序的完整路径。

方法 1

Ubuntu LAB SET_UP

目前,我们位于/home/raj目录,我们将在其中创建一个名为/script的新目录。现在在脚本目录中,我们将编写一个小型c程序来调用系统二进制文件的函数。

1
2
3
4
pwd
mkdir script
cd /script
nano demo.c

在demo.c文件中写入如下代码

1
2
3
4
5
6
7
#include<unistd.h>

void main(){
setuid(0);
setgid(0);
system("ps");
}

然后使用gcc编译demo.c文件,并将编译文件提升到SUID权限

1
2
3
4
ls
gcc demo.c -o shell
chmod u+s shell
ls -la shell

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%