温馨提示×

Ubuntu Exploit如何利用权限提升

小樊
54
2025-10-07 16:09:30
栏目: 智能运维

Ubuntu权限提升常见漏洞及利用方式

1. CVE-2021-3493(OverlayFS漏洞)

漏洞原理:Linux内核OverlayFS文件系统未正确验证用户名称空间的文件系统功能应用,允许非特权用户通过overlayfs挂载绕过权限检查,设置任意文件能力(capability),最终提升至root权限。
适用版本:Ubuntu 14.04/16.04/18.04/20.04/20.10 LTS等。
复现步骤

  • 以普通用户登录,使用GCC编译exp.c生成可执行文件;
  • 执行exp程序,程序会自动完成以下操作:
    ① 创建隔离目录结构(ovlcap/work/lower/upper/merge);
    ② 通过unshare创建新的用户和挂载命名空间;
    ③ 修改/proc/self/setgroups/proc/self/uid_map/proc/self/gid_map映射用户ID;
    ④ 挂载overlay文件系统到merge目录;
    ⑤ 向merge目录中的程序(magic)写入恶意能力(CAP_SYS_ADMIN等);
    ⑥ 执行merge目录中的程序,触发能力应用,获取root权限。
    修复建议:更新系统至Ubuntu官方发布的安全版本(如USN-4915-1至USN-4917-1),修复OverlayFS权限验证逻辑。

2. CVE-2022-0847(Dirty Pipe漏洞)

漏洞原理:Linux内核管道(pipe)缓存机制存在缺陷,攻击者可通过精心构造的输入,将数据覆盖至只读文件的缓存页,且修改会同步至磁盘,绕过文件只读权限限制。
适用版本:Ubuntu 21.10及使用Linux内核5.8及以上版本的系统(如5.13.0-30-generic)。
复现步骤

  • 准备环境:安装存在漏洞的内核(如5.13.0-30-generic),重启后确认内核版本;
  • 下载并编译Dirty Pipe Exploit(如Arinerron的PoC);
  • 备份并修改/etc/passwd,添加root用户条目(如hacker::0:0::/root:/bin/bash);
  • 使用Exploit覆盖/etc/passwd文件(命令示例:./dirtypipe /etc/passwd 1 /tmp/passwd);
  • 验证提权:执行su hacker(无需密码),通过id命令确认UID=0(root权限)。
    修复建议:将Linux内核升级至5.17及以上版本,修复管道缓存处理逻辑。

3. AppArmor绕过漏洞(aa-exec/Busybox/LD_PRELOAD)

漏洞原理:Ubuntu的AppArmor防护机制存在三个绕过路径,允许非特权用户突破命名空间限制,获取root权限:

  • aa-exec工具滥用:默认安装的aa-exec可切换至宽松AppArmor配置文件(如trinity、chrome),进而执行unshare创建无限制命名空间;
  • Busybox利用:默认Busybox shell的AppArmor配置允许不受限制地创建命名空间;
  • LD_PRELOAD注入:向Nautilus(GNOME文件管理器)等可信进程注入恶意共享库,生成特权命名空间shell。
    适用版本:Ubuntu 23.10/24.04 LTS。
    修复建议
  • 内核参数调优:设置kernel.apparmor_restrict_unprivileged_unconfined=1,阻断aa-exec滥用;
  • 配置文件强化:禁用Busybox和Nautilus的宽松AppArmor配置文件;
  • 加强bwrap策略:对依赖bwrap的应用(如Flatpak)实施细粒度命名空间控制。

4. CVE-2025-32462(sudo本地提权漏洞)

漏洞原理:sudo工具的-h/--host选项未严格限制其用途,本应与-l/--list配合查询远程主机权限,但实际可结合命令执行或文件编辑操作,绕过权限检查实现提权。
适用版本:sudo 1.8.8 < 版本 <= 1.9.17(Ubuntu 24.04自带sudo 1.9.15p5受影响)。
复现步骤

  • 编辑/etc/sudoers文件(使用visudo命令),添加ubuntu ci.test.local = NOPASSWD:ALL(允许ubuntu用户无需密码以ci.test.local身份执行所有命令);
  • 执行提权命令:sudo -h ci.test.local(验证配置生效),随后通过sudo -i -h ci.test.local获取root shell。
    修复建议:升级sudo至最新版本(如1.9.18及以上),修复-h选项的权限限制逻辑。

5. eBPF bpf(2)系统调用漏洞(CVE-2024-…)

漏洞原理:Ubuntu 16.04等旧版本内核的eBPF(扩展伯克利包过滤器)bpf(2)系统调用中,验证器模块存在计算错误,非特权用户可通过恶意BPF程序实现任意内存读写,进而提升至root权限。
适用版本:Ubuntu 16.04(内核4.4.0-116-generic及以下)。
修复建议:禁用非特权用户的eBPF功能,通过以下命令设置:
echo 1 > /proc/sys/kernel/unprivileged_bpf_disabled
或永久生效:
sysctl -w kernel.unprivileged_bpf_disabled=1

6. needrestart程序漏洞(CVE-2024-48990等)

漏洞原理:Ubuntu Server常用的needrestart工具存在多个本地提权漏洞,包括:

  • CVE-2024-48990:滥用PYTHONPATH环境变量执行恶意Python解释器;
  • CVE-2024-48992:Ruby解释器处理RUBYLIB环境变量时注入恶意库;
  • CVE-2024-10224:Perl ScanDeps模块处理特殊文件名时执行任意命令。
    适用版本:needrestart 0.8至3.7版本(Ubuntu 22.04/24.04默认安装)。
    修复建议:升级needrestart至3.8及以上版本,修改/etc/needrestart/needrestart.conf文件,禁用解释器扫描功能(如设置$nrconf{scan_interp} = 'none';)。

0