漏洞简介

有的用户可能知道,如果将sudo配置为允许用户通过Runas规范中定义的ALL关键字来以任意用户身份运行命令的话,那么攻击者将有可能通过制定用户ID -1或4294967295来以root权限执行恶意命令。

实际上,只要用户的权限足够高,即拥有最高sudo权限的用户,并且在Runas规范中定义了ALL关键字的话,他们就可以运行Runas规范中明确禁止使用的那些root命令,而且以这种方式运行的命令其日志项所显示的目标用户为4294967295,而不是root。与此同时,在执行相应命令的过程中,PAM会话模块将不会运行。

Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令。通常以 root 用户身份运行命令,是为了减少 root 用户的登录和管理时间,同时提高安全性。

漏洞影响

1
2
版本号 < 1.8.28的Sudo版本均将受到该漏洞的影响
漏洞编号CVE-2019-14287

漏洞复现

在大多数 Linux 发行版中,/etc/sudoers 文件中 RunAs 规约的 ALL 关键字允许 admin 或 sudo 组中的所有用户以系统中的任何有效用户身份运行任何命令

利用方式如下

1
sudo -u#-1 id -u

OR

1
sudo -u#4294967295 id -u

但是前提条件是如下

1、其中的test表示用户名
2、第一个ALL表示允许该用户在任意机器或者终端中使用sudo
3、括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去 执行
4、最后一个ALL表示被允许执行

攻击复现截图如下

修复建议

1
Sudo v1.8.28版本已修复该漏洞,建议广大Linux用户尽快手动将sudo包更新至最新版本。

参考:

https://www.freebuf.com/vuls/217089.html