0x00:简介
sudo,也就是以超级管理员身份运行(superuser do)的意思。sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每一款基于 UNIX 或 Linux 的操作系统上,也是这些操作系统的核心命令。作为一个系统命令,普通用户可通过它以特殊权限来运行程序或命令(通常以 root 用户身份运行命令),而无需切换使用环境。
0x01:利用过程
默认情况下,在大多数 Linux 发行版中,/etc/sudoers 文件中 RunAs 规约的 ALL 关键字允许 admin 或 sudo 组中的所有用户以系统中的任何有效用户身份运行任何命令。如下图所示:
该漏洞的 CVE ID 为 CVE-2019-14287
如果想要利用这个漏洞,只需按以下的方式运行即可:
sudo -u#-1 id -u
OR
sudo -u#4294967295 id -u
但是,前提的条件是要设置安全策略
设置如下
1、其中的test表示用户名 2、第一个ALL表示允许该用户在任意机器或者终端中使用sudo 3、括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去 执行 4、最后一个ALL表示被允许执行
0x02:总结OR预防
1、之所以会产生这个漏洞,是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,由于通过 -u 选项指定的 User ID 在密码数据库中不存在,因此不会运行任何 PAM 会话模块。 2、最后,请将 sudo 升级到 1.8.28 最新版本,该漏洞会影响 1.8.28 之前的所有版本。