CVE-2019-14287:sudo权限绕过漏洞复现
简介
sudo,也就是以超级管理员身份运行(superuser do)的意思。sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每一款基于 UNIX 或 Linux 的操作系统上,也是这些操作系统的核心命令。作为一个系统命令,普通用户可通过它以特殊权限来运行程序或命令(通常以 root 用户身份运行命令),而无需切换使用环境。
复现
环境
这里我用了一台ubuntu的虚拟机,版本比较老,sudo是有问题的,用来测试。
默认情况下,在大多数 Linux 中,配置文件/etc/sudoers 文件中 RunAs 规约的 ALL 关键字允许 admin 或 sudo 组中的所有用户以系统中的任何有效用户身份运行任何命令。
先看版本,可以用来试试
然后修改下配置文件
解释下:
- 其中的hmo表示用户名
- 第一个ALL表示允许该用户在任意机器或者终端中使用sudo
- 括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去执行
- 最后一个ALL表示被允许执行的命令
复现
在低权限用户hmo的bash下执行命令
sudo -u#-1 whoami or sudo -u#4294967295 whoami
总结
漏洞成因:sudo中是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,由于通过 -u 选项指定的 User ID 在密码数据库中不存在,因此不会运行任何 PAM 会话模块。
总的来说比较鸡肋,我就是水一篇文章,就这样。
预防
请将 sudo 升级到 1.8.28 最新版本,该漏洞会影响 1.8.28 之前的所有版本。