事
件背
景
2019年10月14日,Sudo官方释放了新版本1.8.28,其中包含sudo root权限绕过漏洞的补丁修复。
此漏洞编号是CVE-2019-14287,用户可以构造的payload,在特定条件下可以可以通过指定用户ID -1或4294967295以root用户身份运行命令。
漏洞信息
漏洞名称
|
sudo 权限绕过漏洞
|
CVE编号
|
CVE-2019-14287
|
CNVD编号
|
-
|
影响版本
|
sudo <1.8.28
|
威胁等级
|
高危
|
公开时间
|
2019年10月14日
|
影响范围
sudo < 1.8.28
漏洞分析
官网描述的漏洞细节(https://www.sudo.ws/alerts/minus_1_uid.html)
从中截取部分如下:
当 /etc/sudoers 文件存在如下形式的配置时,bob实际上可以通过运行sudo -u#-1 vi来越权以root身份运行vi程序
myhsot bob=(ALL, !root) /usr/bin/vi
先解释下这段配置
myhsot -– 在myhost主机上,一般配置为ALL即在所有主机
bob –- 表示将bob用户加入sudo组,如果给组赋权在前面加上%
(ALL, !root) –-以root身份以外的任何用户身份
/usr/bin/vi –- 允许执行的程序或命令,这里是只允许执行vi
(详细介绍请参考官网手册https://www.sudo.ws/sudo/man/1.8.2/sudoers.man.html)
一句总结就是:在/etc/sudoers配置中只允许用户bob以root身份以外的任何用户身份在myhost主机上运行vi。但是由于sudo存在漏洞,bob实际上可以通过运行sudo -u#-1 vi来以root身份运行 vi程序。
漏洞复现
1.查看sudo版本
在Linux终端中使用sudo -V 命令查看版本
该版本号为1.8.19p1,在影响范围中
使用普通用户lab(uid=1000)直接查看/etc/shadow提示权限拒绝
2.修改/etc/sudoers 文件
修改/etc/sudoers 文件
加入以下内容:
lab ALL=(ALL, !root) /bin/bash
允许lab用户在所有主机上以root身份以外的任何用户身份执行bin/bash程序
*这一步配置主要是测试使用,实际运维工作中很少见
3.漏洞利用权限绕过
1.进入lab的终端执行
sudo -u#-1 /bin/bash
对比发现uid=0(root),gid和group均未发生变化
查看/etc/shadows文件