Linux 提权深入:脏牛等内核漏洞

Linux 内核提权漏洞实战:脏牛、Dirty Pipe、OverlayFS、PwnKit、Looney Tunables,原理、影响、利用、检测、防御与修复。

写在前面:合法学习边界

内核提权只允许在授权靶场进行。利用内核漏洞在真实系统提权可能触发系统崩溃,风险高、可能触犯法律。

一、原理

当 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
id        # uid=0(root)

五、检测

1
2
3
uname -r 对比已修复版本
补丁缺失、内核长期不更新
存在可复现的 CVE 条件

六、防御

1
2
3
4
及时打内核/系统补丁(最根本)
最小化暴露,防止低权限入口
对可疑编译/执行行为告警
容器/云主机用加固镜像

七、修复

1
2
3
升级内核与关键组件(glibc/polkit 等)
对已提权主机取证、清理
修复后复测:旧 exploit 失效

八、小结

内核提权是 Linux 提权的“核武器”:破坏性大、但成功率取决于版本。正确姿势是先 uname 定版本,再对号打对应 CVE。防御端只有一条最有效——及时打补丁。脏牛、PwnKit 这类“老而经典”的漏洞,至今还在大量老系统上有效。