当前位置:首页>Linux>Linux内核二进制提权实战:从漏洞原语到同源利用的工程化落地

Linux内核二进制提权实战:从漏洞原语到同源利用的工程化落地

  • 2026-10-11 05:40:43
Linux内核二进制提权实战:从漏洞原语到同源利用的工程化落地

引言

本地内核提权(Local Privilege Escalation, LPE)是攻防对抗中权限提升的终极路径之一。从最初触发内核崩溃的PoC,到能稳定绕过KASLR、SMEP等防护机制并获取root shell的完整利用,中间横跨内存泄露、堆风水布局、执行流劫持、权限切换等多个技术环节。

在实战场景中,单一利用路径往往受内核版本、编译选项、防护机制影响而失效。本文以三个经典Linux内核漏洞为样本,提出同源利用思想——基于同一漏洞根因,并行设计三条独立利用向量,同时构建标准化的“五星完整版”提权工程框架,实现从崩溃触发到稳定提权的全链路闭环。

一、内核提权的通用技术范式

1.1 标准提权四阶段链路

完整的内核提权利用并非单次漏洞触发即可完成,而是遵循固定的工程化链路:

稳定内存泄露:绕过KASLR地址随机化,获取内核基址、堆地址、栈地址等关键信息,是所有后续操作的前提;

防护机制绕过:针对SMEP(内核态禁止执行用户态代码)、SMAP(内核态禁止访问用户态数据)、堆隔离等防护,设计对应绕过方案;

堆风水布局:通过堆喷精确控制slab分配,让可控对象占据漏洞释放后的内存槽位,实现对象劫持;

执行流劫持与权限提升:通过函数指针篡改、ROP链、页表篡改等方式,在内核态执行commit_creds(prepare_kernel_cred(0)),完成UID清零提权。

1.2 同源利用思想的核心价值

同源利用指针对同一个漏洞根因,挖掘多条独立的利用路径,分别指向不同的内核对象、执行流劫持方式与防护绕过手段。其价值体现在三点:

容错性:单一路径被防护阻断时,其余路径仍可完成提权;

适配性:不同内核版本、不同发行版的内核配置差异,可通过不同路径兼容;

隐蔽性:多路径随机切换,降低防护设备的特征检测概率。

下文三个漏洞均采用“一漏洞三同源”的设计,形成完整的利用矩阵。

二、三大经典内核漏洞的原理与同源利用

2.1 CVE-2016-0728:密钥环引用计数溢出UAF

漏洞核心原理

该漏洞存在于Linux内核密钥管理子系统keyrings,影响3.8及以上版本内核。当进程调用keyctl_join_session_keyring加入同名会话密钥环时,函数存在引用计数泄漏:子进程加入密钥环后退出,密钥环的引用计数只增不减。通过循环fork子进程反复加入,可让32位引用计数溢出回绕,此时调用KEYCTL_REVOKE会触发对象释放,形成释放后使用(UAF)漏洞。

原始PoC仅通过循环调用KEYCTL_JOIN_SESSION_KEYRING无法稳定触发,必须借助fork子进程的生命周期完成引用计数泄漏,这是多数公开脚本的常见错误。

三条同源利用路径

同源1:user_key对象覆盖 → cred结构体直写

利用UAF释放的slab槽位,喷射user_key内核对象,篡改key的数据指针指向当前进程的cred结构体。通过keyctl_update原语向该地址写入0,直接清零UID、GID等权限字段,无需劫持执行流即可完成提权。该路径最短、稳定性最高,是首选利用向量。

同源2:msg_msg堆喷 → 信息泄露 + ROP提权

通过msgsnd喷射msg_msg对象占据释放的内存,利用keyctl_read读取被覆盖的对象数据,从中提取内核指针以泄露内核基址。随后构造完整ROP链,绕过SMEP执行提权函数。该路径适配性强,可应对多数开启SMEP的内核版本。

同源3:file结构体覆盖 → f_op函数指针劫持

批量打开/dev/null生成大量file内核对象,堆喷覆盖UAF内存。篡改文件操作表f_op指针,将read回调指向提权gadget。后续调用read触发内核态回调执行,完成权限提升。该路径可规避key子系统的访问检测,隐蔽性更强。

2.2 CVE-2014-0038:x32 ABI下recvmmsg任意写原语

漏洞核心原理

漏洞源于x32兼容ABI的compat_sys_recvmmsg系统调用:函数直接接收用户态传入的timeout指针,并在内核态修改其指向的值,却未对指针地址做合法性校验。普通64位调用有完整边界检查,而x32调用路径遗漏校验,最终形成内核任意地址单字节写原语,影响3.4及以上开启x32 ABI的内核。

三条同源利用路径

同源1:逐字节覆写cred结构体

通过/proc/pid/status或侧信道定位当前进程的task_struct,计算cred结构体偏移。利用任意字节写原语,逐字节将uid、euid、suid等字段清零。该路径无需执行流劫持,不依赖内核符号,兼容性极强。

同源2:VDSO页植入shellcode

VDSO是内核映射到用户态的可执行页,通过任意写原语将提权shellcode写入VDSO页。随后触发clock_gettime等VDSO调用,让内核态执行流跳转到植入的代码,完成commit_creds调用。该路径可绕过SMEP,且无需泄露大量内核地址。

同源3:篡改PTE页表项

定位目标内核页对应的页表项(PTE),通过任意写修改PTE的Present、R/W、User位,将内核物理页映射为用户态可读写。随后直接在用户态修改内核内存中的cred字段,无需进入内核态即可完成提权。

2.3 PTY TIOCSPGRP:竞态条件下的tty结构体UAF

漏洞核心原理

漏洞位于TTY子系统的TIOCSPGRP ioctl处理逻辑:PTY主从设备共享tty_struct结构体,但ioctl加锁时错误地使用了主设备的锁而非实际操作对象的锁。并发执行ioctl与close操作时,tty结构体被释放后仍可能被引用,触发竞态UAF。

原始PoC常因未正确解锁PTY、未获取从设备路径而无法稳定触发,需通过unlockpt与ptsname_r完成规范的PTY初始化。

三条同源利用路径

同源1:tty_operations函数表劫持

竞态触发UAF后,批量打开PTY设备喷射tty_struct对象,占据释放的slab槽位。篡改结构体中的ops指针指向伪造的函数表,将ioctl回调替换为提权函数。再次调用ioctl时即可劫持执行流,完成内核态提权。

同源2:termios结构越界读 + 栈ROP

通过覆盖termios终端属性结构,构造越界读原语泄露内核栈地址。随后利用栈溢出布置ROP链,通过TIOCSLCKTRMIOS ioctl触发栈溢出,执行ROP链绕过SMEP完成提权。

同源3:线路规程ldisc_ops劫持

篡改tty结构体中的线路规程操作表ldisc_ops,将read等回调指向可控地址。通过TIOCSETD切换线路规程触发回调执行,可绕过SMAP限制直接执行用户态payload,适配性更广。

三、五星完整版提权脚本的工程化设计

3.1 标准化代码骨架

所有提权脚本统一采用四层结构,保证可读性与可维护性:

temp区:存放全局临时变量、重试计数、泄露地址等运行时数据;

sep区:定义利用路径枚举与全局路径变量,实现多路径切换;

sample区:存放ROP链、shellcode、堆喷数据等payload样本;

tuple区:定义参数元组结构体,统一管理堆喷数量、竞态次数、符号偏移等可调参数。

3.2 核心能力增强

自动重试与路径切换:单一路径失败后自动切换下一同源路径,最多重试5轮,大幅提升成功率;

环境自检:执行前检测内核版本、防护机制、x32 ABI支持等环境信息,自动选择最优初始路径;

异常捕获:内置信号处理与超时机制,避免内核panic导致系统挂死,保证批量测试的稳定性。

3.3 批量测试与迭代流程

工程化提权脚本的验证遵循严格的闭环流程:

静态编译:统一使用gcc -static -O2编译,消除依赖差异,批量生成二进制;

隔离测试:单脚本单次执行,记录执行ID,每轮测试后重启靶机重置内核环境,避免残留影响;

日志归集:统一抓取dmesg输出、进程返回值、提权结果、内存泄露地址等信息,形成结构化日志;

有效筛选:过滤出可稳定触发漏洞、完成地址泄露、实现代码执行的有效脚本;

定向迭代:仅针对有效脚本微调堆喷尺寸、释放时序、ROP偏移、路径优先级等参数;

最终固化:调试稳定后归档正式版本,留存所有调试参数与注释。

3.4 从崩溃到稳定泄露的改造思路

多数原始PoC仅能触发内核崩溃,距离实战提权的核心差距在于稳定的信息泄露。改造要点包括:

将无序堆喷改为精确slab尺寸喷射,提高对象命中率;

增加泄露验证逻辑,通过地址掩码判断是否读取到有效内核指针;

对竞态漏洞增加触发成功率统计,动态调整竞态循环次数。

四、现代内核防护下的对抗思路

随着内核安全机制的演进,KASLR、SMEP/SMAP、堆随机化、CFG等防护已成为标配,同源利用框架正是应对防护升级的有效手段:

应对KASLR:每条同源路径均内置独立的信息泄露原语,避免单一泄露点被封堵;

应对SMEP/SMAP:三条路径分别采用内核ROP、VDSO执行、页表映射三种不同绕过方案,覆盖绝大多数防护组合;

应对堆隔离:组合使用user_key、msg_msg、file、tty等多种内核对象喷射,突破slab分类隔离的限制;

应对检测:多路径随机执行,避免固定调用序列被行为检测识别。

五、总结与展望

Linux内核提权技术的演进,本质是漏洞原语与防护机制的持续对抗。从单一崩溃PoC到多路径工程化利用,从手工调参到批量自动化验证,提权技术的工程化程度不断提升。

同源利用思想与标准化五星框架的价值,在于将零散的漏洞利用技巧沉淀为可复用、可迭代的工程体系。无论是经典漏洞的复现,还是新漏洞的快速利用开发,这套体系都能显著缩短从原理验证到实战落地的周期。

对于防御方而言,理解提权利用的通用链路与同源设计思路,也有助于针对性地加固关键内核子系统、完善内存安全检测机制,构建更纵深的内核安全防护体系。

最新文章

随机文章