温馨提示×

Ubuntu Exploit利用途径有哪些

小樊
43
2025-12-06 06:55:37
栏目: 智能运维

Ubuntu 常见 Exploit 利用途径分类

一 本地服务与内核子系统的可利用面

  • 用户命名空间 + 内核子系统:在允许非特权用户创建命名空间的配置下(如开启 kernel.unprivileged_userns_clone),攻击面会显著扩大;例如 nftables 子系统近年多次曝出 LPE 漏洞,研究者已在 Pwn2Own 2023 中通过用户命名空间 + nftables 实现 Ubuntu 本地提权。此类路径本质是“先拿到命名空间,再打内核对象/解析器”。
  • 内核命名空间限制绕过:在 Ubuntu 23.10、24.04 LTS 上,存在通过 aa-exec、BusyBox、LD_PRELOAD 等方式绕过默认的用户命名空间限制的方法;虽然本身不直接获取 root,但会把需要 CAP_SYS_ADMIN/CAP_NET_ADMIN 的内核漏洞利用门槛大幅降低,形成“绕过 + 内核漏洞”的链式利用。

二 系统服务与桌面组件的缺陷利用

  • Snapd API 本地提权(Dirty Sock,2019):默认安装的 snapd 存在本地 API 访问控制缺陷,任意本地用户可通过构造请求创建本地用户或侧载恶意 snap(install hook 以 root 执行),直接获取 root 权限;影响包括 Ubuntu 18.10 及多款旧版本。
  • AccountsService + GNOME 提权(CVE-2021-4034 相关利用链):通过把用户主目录下的 .pam_environment 链接到 /dev/zero 触发 accounts-daemon 无限循环,再以 SIGSTOP/SIGSEGV 操控其状态,诱导 gdm3/gnome-initial-setup 误判用户数为 0 并弹出“创建管理员账户”对话框,从而创建具有 sudo 权限的新用户。该问题影响多个仍在维护的 Ubuntu 版本(如 16.04/18.04/20.04/20.10 等)。

三 权限配置错误与滥用导致的提权

  • SUID/GUID 滥用:当二进制设置了 SUID/SGID 且存在命令注入或调用外部程序时,可被低权限用户“借权”。典型例子:老版本 nmapSUID interactive 模式执行“!sh”直接拿 root;或程序内调用外部命令(如 cat)时通过 PATH 环境变量劫持执行任意代码。
  • 计划任务与服务脚本:如 /etc/crontab、/var/spool/cron、systemd 服务、/etc/rc.local 等被低权限用户可写或影响,可植入提权逻辑;配合 PATH、LD_PRELOAD、权限继承 等技巧实现稳定提权。
  • sudo 与 Polkit 误配置:将不该免密的命令加入 sudoers,或将 Polkit 规则设为 allow_active=yes 等宽松策略,易被本地或远程(在某些发行版上)利用;例如 CVE-2025-6019 通过 udisks2/libblockdev 与 Polkit 默认规则组合,在部分发行版上实现提权(Ubuntu 受影响;同时 CVE-2025-6018 为 PAM 配置问题,Ubuntu 官方说明不受影响,但仍应核查本地策略)。

四 容器与沙箱的逃逸与越权

  • OverlayFS 越权写:利用 OverlayFS 在挂载命名空间中的权限校验缺陷,先在临时层创建或改写关键文件(如 /etc/ld.so.preload),再借第二次挂载合并将其“带出”到目标目录,从而获得任意代码执行或持久化能力。
  • 用户命名空间限制绕过 + 容器逃逸:当系统存在 aa-exec/BusyBox/LD_PRELOAD 等绕过时,容器/沙箱内的非特权代码可创建更宽松的命名空间,配合内核漏洞或挂载操作实现容器逃逸或宿主机提权。

五 快速自查与缓解要点

  • 快速自查
    • 查看是否存在危险的 SUID/SGIDfind / -type f \( -perm -4000 -o -perm -2000 \) -ls 2>/dev/null
    • 检查 cron 与系统服务:crontab -l -u rootsystemctl list-timers --allgrep -R "User=root" /etc/systemd/ /lib/systemd/ 2>/dev/null
    • 审核 sudoersPolkitvisudo -cgrep -R "allow_active" /etc/polkit-1/ 2>/dev/null
    • 检查 snapd 与潜在暴露面:snap versionsystemctl status snapdss -xl | grep snapd
    • 查看 AppArmor 状态与宽松配置:aa-statusgrep -R "aa-exec\|busybox\|nautilus" /etc/apparmor.d/ 2>/dev/null
  • 缓解建议
    • 及时更新:优先修补内核、snapdudisks2/libblockdevpolkitAppArmor 等关键组件。
    • 收紧命名空间:在不需要的场景下关闭或限制 kernel.unprivileged_userns_clone;对 aa-exec/BusyBox 使用更严格的 AppArmor 配置。
    • 清理与加固 SUID/GUID:移除不必要的 SUID,或以最小权限重写调用链;严格校验 PATH/LD_PRELOAD
    • 加固计划任务与服务:确保仅 root 可写;服务最小权限运行,避免以 root 执行不可信代码。
    • 强化认证与授权:谨慎配置 sudoers/Polkit,避免 allow_active=yes 等宽松规则;对关键操作启用多因素认证与审计。

0