写在前面:合法学习边界
内核提权只允许在授权靶场进行。利用内核漏洞在真实系统提权可能触发系统崩溃,风险高、可能触犯法律。
一、原理
当 sudo/SUID/可写文件都没戏时,才考虑内核漏洞。内核漏洞 = 低权限用户触发内核中的 bug,拿到 root。
1
| 低权限进程 → 触发内核漏洞 → 以 root 执行代码
|
为什么是“最后手段”:破坏性高(可能崩溃)、不同内核版本 exploit 不通、容易暴露。
二、经典与时效的内核漏洞
1. 脏牛 Dirty Cow(CVE-2016-5195)
1
2
3
| 写时拷贝(COW)竞态 → 可覆盖只读文件(如 /etc/passwd)
影响:Linux 2.6.22 – 4.8.x
利用:dirtycow 写 /etc/passwd 添加 root 用户
|
2. Dirty Pipe(CVE-2022-0847)
1
2
3
| 未初始化管道缓冲 → 修改只读文件/覆盖 /etc/passwd
影响:Linux 5.8 – 5.16.x
利用:dirtypipe 写 root 用户
|
3. PwnKit(CVE-2021-4034)
1
2
3
| polkit 的 pkexec 未正确处理参数 → 直接提权 root
影响:几乎所有主流发行版(2022 爆出,老版本长期受影响)
利用:一键 pkexec exploit,非常稳定
|
4. OverlayFS(CVE-2021-3493)
1
2
| Ubuntu overlayfs 文件复制竞态 → 提权
影响:Ubuntu 16.04/18.04/20.04
|
5. Looney Tunables(CVE-2023-4911)
1
2
| glibc ld.so 堆溢出 → 提权
影响:主流发行版部分版本(时效性高)
|
三、影响
1
2
3
| 低权限 → root
完全控制主机
横向移动、抓取更多凭据
|
风险等级:高到严重。
四、利用 / 复现(授权环境)
第一步:确认内核版本与系统
1
2
| uname -a
cat /etc/os-release
|
第二步:对号选 exploit
1
2
3
4
5
6
7
8
9
| # 内核版本 → 匹配已知 CVE
# 例:脏牛
gcc -pthread dirty.c -o dirty -lcrypt
./dirty 新密码
su 新用户
# PwnKit(通用性强)
./CVE-2021-4034
id # 已是 root
|
第三步:验证
五、检测
1
2
3
| uname -r 对比已修复版本
补丁缺失、内核长期不更新
存在可复现的 CVE 条件
|
六、防御
1
2
3
4
| 及时打内核/系统补丁(最根本)
最小化暴露,防止低权限入口
对可疑编译/执行行为告警
容器/云主机用加固镜像
|
七、修复
1
2
3
| 升级内核与关键组件(glibc/polkit 等)
对已提权主机取证、清理
修复后复测:旧 exploit 失效
|
八、小结
内核提权是 Linux 提权的“核武器”:破坏性大、但成功率取决于版本。正确姿势是先 uname 定版本,再对号打对应 CVE。防御端只有一条最有效——及时打补丁。脏牛、PwnKit 这类“老而经典”的漏洞,至今还在大量老系统上有效。