sudo+SETENV(环境变量)提权

sudo运行时默认会启用env_reset选项将从命令行设置的环境变量复原,因此通常情况下,当使用sudo命令时,通过本地修改环境变量也没法替换目标文件来进行提权,但如果sudo在配置时为用户设置了SETENV选项,情况就不一样了。SETENV会允许用户禁用env_reset选项,允许sudo使用当前用户命令行中设置的环境变量,如下图:sudo允许当前用户以root身份执行一个shell脚本,并为当前用户配置了SETENV,shell脚本是打印syslog最后几行。

如果没有配置SETENV,这里是无法通过改环境变量把tail替换成一个vim命令来进行提权的。这里有SETENV,那么就可以设置环境变量

一、从/bin目录复制一个vim,并命名为tail存在/tmp目录下

二、通过下面的命令,将/tmp目录放置在PATH环境变量的最前面

export PATH=/tmp:$PATH

三、通过下面的命令即可运行我们伪造的tail命令,从而用vim进行提权

sudo --preserve-env=PATH /usr/bin/check_syslog.sh

--preserve-env会使用当前新的PATH作为环境变量,并禁用env_reset选项,从而达到先执行我们伪造的tail命令的目的

* sudo也可以直接支持对环境变量进行赋值

 

 所以也可以用以下命令进行提权

export PATH=/tmp:$PATH
sudo PATH=$PATH /usr/bin/check_syslog.sh
posted @ 2021-10-27 15:44  隐念笎  阅读(1233)  评论(0编辑  收藏  举报