当前位置: 首页 > news >正文

Linux 内核漏洞提权

一、 内核提权的核心原理

Linux 采用权限分级机制(root:0,普通用户:1-65535),内核运行在最高权限的内核态(Ring 0),用户程序运行在用户态(Ring 3)。内核提权的本质是:

  1. 低权限用户通过系统调用触发内核漏洞;
  2. 利用漏洞执行任意内核态代码(如修改当前进程的uid/gid为 0);
  3. 从内核态返回用户态时,已获得 root 权限。

二、 常见内核漏洞类型及利用场景

1. 内存破坏类漏洞(最主流)

内核对内存操作的校验不严格,导致攻击者可篡改内核内存数据,执行恶意代码。

  • 缓冲区溢出(Buffer Overflow)
    • 原理:内核函数对输入数据长度校验不足,导致超出缓冲区的恶意数据覆盖内核栈 / 堆中的关键信息(如返回地址、函数指针)。
    • 典型案例:CVE-2017-16995(eBPF 权限提升漏洞)、CVE-2021-4034(Polkit pkexec 本地提权,虽非纯内核漏洞,但利用了内核与用户态交互缺陷)。
  • 使用后释放(Use-After-Free, UAF)
    • 原理:内核释放内存对象后未清空指针,攻击者通过竞争条件重新控制该内存区域,伪造内核数据结构。
    • 典型案例:CVE-2022-0847(Dirty Pipe,通过管道缓冲区越界写入修改文件内容,间接实现提权)、CVE-2019-13272(overlayfs 权限检查漏洞)。
  • 越界读写(Out-of-Bounds Read/Write)
    • 原理:内核数组 / 链表操作时未校验索引范围,导致攻击者读取或修改内核敏感内存区域。

2. 权限检查绕过类漏洞

内核在执行敏感操作时(如文件访问、进程管理),权限校验逻辑存在缺陷,导致低权限用户绕过限制。

  • 典型案例:CVE-2021-3493(Ubuntu overlayfs 漏洞,低权限用户可通过挂载 overlayfs 修改任意文件权限)。

3. 配置与设计缺陷

  • 内核模块加载漏洞:部分系统允许普通用户加载自定义内核模块(modprobe权限配置错误),攻击者可通过恶意模块直接获取 root 权限。
  • SUID/SGID 程序滥用:内核对 SUID 程序的权限管控不严,攻击者通过触发特定内核行为,让 SUID 程序执行恶意代码。

三、 内核提权的典型利用流程(渗透测试视角)

  1. 信息收集

    • 目标主机内核版本:uname -r(如5.4.0-125-generic)、cat /proc/version
    • 操作系统发行版:cat /etc/os-release(Ubuntu、CentOS、Debian 等,不同发行版的内核补丁差异大)。
    • 已安装内核补丁:dpkg -l | grep linux-image(Debian/Ubuntu)、rpm -qa | grep kernel(CentOS/RHEL)。
    • 关键配置:sysctl kernel.modules_disabled(是否禁止加载内核模块)。
  2. 漏洞匹配

    • 根据内核版本 + 发行版,查询公开漏洞库(CVE Details、Exploit-DB、GitHub),寻找对应的公开 EXP
    • 核心工具:
      • searchsploit:本地漏洞库查询,如searchsploit Linux kernel 5.4.0 Ubuntu
      • exploitdb:在线搜索,匹配精准漏洞 EXP。
  3. EXP 编译与执行

    • 多数内核提权 EXP 为 C 语言编写,需在目标主机编译(需安装gcc):gcc exp.c -o exp -static(静态编译避免依赖缺失)。
    • 执行 EXP:./exp,成功后返回 root 权限 shell(如#提示符)。
  4. 绕过防御机制

    • SELinux 绕过:若 SELinux 开启(getenforce显示Enforcing),部分 EXP 需添加 SELinux 绕过逻辑,或临时关闭(setenforce 0,需特定权限)。
    • AppArmor 绕过:修改 EXP 规避 AppArmor 对敏感路径的限制。
    • 内核防护机制绕过:如 KASLR(内核地址空间随机化),部分旧漏洞 EXP 需泄露内核基地址才能利用。

四、 蓝队防御与检测策略

1. 核心防御措施:阻断漏洞源头

  • 及时更新内核补丁
    • 定期升级内核至最新稳定版本:
      • Debian/Ubuntu:apt update && apt install linux-image-generic -y && reboot
      • CentOS/RHEL:yum update kernel -y && reboot
    • 关注厂商安全公告,优先修复高危提权漏洞(如 CVE 评分 ≥9.0)。
  • 限制内核模块加载
    • 配置sysctl kernel.modules_disabled=1,禁止加载自定义内核模块(需重启生效)。
    • 对必须加载的模块,通过/etc/modprobe.d/配置白名单。
  • 最小权限原则
    • 禁止普通用户执行sudo权限下的敏感命令(如modprobemount)。
    • 清理系统中不必要的 SUID/SGID 程序:find / -perm -4000 -ls,移除非必要程序的 SUID 权限。
  • 启用内核安全机制
    安全机制作用启用方式
    KASLR随机化内核内存地址,增加 EXP 编写难度内核编译时开启CONFIG_RANDOMIZE_BASE,多数发行版默认启用
    SMEP/SMAP禁止内核态执行用户态内存 / 禁止内核态访问用户态内存需 CPU 支持,内核默认启用
    SELinux/AppArmor强制访问控制,限制进程权限设为Enforcing模式,配置严格规则

2. 检测手段:发现提权行为

  • 日志监控
    • 监控内核日志:dmesg中异常信息(如segmentation faultkernel panicinvalid opcode),可能是 EXP 执行失败导致的内核崩溃。
    • 监控进程权限变更:通过auditd配置规则,记录setuid(0)等敏感系统调用,如:

      bash

      运行

      auditctl -a exit,always -F arch=b64 -S setuid -k privilege-escalation
    • 监控可疑文件:检测/tmp目录下的恶意可执行文件、内核模块文件(.ko)。
  • 行为检测
    • 部署 HIDS(主机入侵检测系统,如 OSSEC、Wazuh),监控以下异常行为:
      • 低权限用户突然执行 root 权限命令(如passwd/bin/bash)。
      • 异常的内核模块加载(如insmodmodprobe调用)。
      • /proc/kcore(内核内存镜像)的访问。
  • 定期自查
    • 使用工具扫描内核漏洞:lynis audit system(系统安全审计工具)、rkhunter(rootkit 检测工具)。
    • 模拟攻击:使用公开 EXP 对测试机进行提权测试,验证防御有效性。

五、 典型内核提权 EXP 示例(以 Dirty Pipe 为例)

CVE-2022-0847(Dirty Pipe)影响 Linux 内核 5.8 ~ 5.16.11,攻击者可通过管道缓冲区越界写入,修改任意只读文件(如/etc/passwd),实现提权。

  1. 核心思路:向管道写入大量数据,触发内核缓冲区溢出,覆盖只读文件的内存映射区域。
  2. 简化 EXP 逻辑:

    c

    运行

    #include <unistd.h> #include <fcntl.h> #include <stdio.h> #include...
  3. 执行效果:运行 EXP 后,可将普通用户添加到/etc/passwd并赋予 root 权限。
http://www.jsqmd.com/news/280669/

相关文章:

  • 连接 AI 的隐形纽带:深度解构 MCP 传输层——从 Stdio 到 SSE 的实战抉择与架构差异
  • 计算机毕业设计springboot基于农科所农作物信息管理系统的设计与实现 基于SpringBoot的农业科研院所作物数据智慧管理平台的设计与实现面向农科机构的SpringBoot作物全生命周期
  • 测试转网络安全如何弯道超车?
  • Java计算机毕设之基于springboot的智慧医疗网上预约系统智慧医疗服务-智慧医疗服务平台(完整前后端代码+说明文档+LW,调试定制等)
  • 微服务架构演进实战 从单体到微服务的拆分原则与DDD入门
  • python mqgg 发送 json 文件
  • 学习日记day64
  • Java毕设项目:基于springboot的智慧医疗网上预约系统(源码+文档,讲解、调试运行,定制等)
  • GGUF、Safetensors、ONNX三种格式
  • springboot_ssm815大学生校园图书借阅购买管理系统--论文
  • #对象模型
  • 强烈安利8个AI论文平台,本科生搞定毕业论文!
  • springboot_ssm816大学运动场地预约器材租借管理系统--论文
  • springboot_ssm817学生信息管理系统--论文
  • leetcode 热题
  • [ACTF2020 新生赛]Upload 1(一句话木马加蚁剑)
  • 【深度测评】2026年护考刷题APP算法横评:为何“易小考”能成为护资备考首选?
  • 【毕业设计】基于springboot的智慧医疗网上预约系统(源码+文档+远程调试,全bao定制等)
  • RHCSA结课综合作业
  • 【课程设计/毕业设计】基于springboot的智慧医疗网上预约系统医院在线挂号与患者预约管理【附源码、数据库、万字文档】
  • springboot_ssm807古诗词数字化分享平台--论文
  • 异常检测:提示工程架构师如何识别提示数据中的异常行为?
  • 字节面试官:问你C++观察者模式,你答了7点他说不够深
  • 分流抢票软件bypass,Bypass-分流抢票:让你秒杀抢票,稳定捡漏的神器!
  • springboot_ssm808图书借阅挂失崔还系统功能全--论文
  • K8s修改Pod的Command/Args参数报错?这篇实操指南帮你搞定
  • K8s Nginx Pod 出现 CrashLoopBackOff?从配置排查到彻底解决
  • Ubuntu系统移植
  • 【奖励到账】CSDN AI 社区镜像创作激励活动第三批奖励正式发放!
  • [特殊字符] 最新版 | Windows10 Win11系统终极优化神器RyTuneX完全安装配置指南 [特殊字符]