~~~~~~~~ 因为想要面对一个新的开始,一个人必须有梦想、有希望、有对未来的憧憬。如果没有这些,就不叫新的开始,而叫逃亡。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ————玛丽亚·杜埃尼亚斯
前言
据报道指出sudo存在一个安全策略隐患,即便sudoers配置文件中明确表示不允许以root用户进行访问,但恶意用户仍可利用该漏洞提取至root身份以执行任意命令。
sudo是个什么呢?简单的说就是普通用户可以通过它以管理员的身份执行某些不可描述的命令,并且无需切换使用环境。
相关目录
/etc/sudoers #保存sudo的规约
/etc/sudoers.d #sudo目录
漏洞详情
该漏洞由苹果信息安全部门的 Joe Vennix 追踪发现,漏洞的编号为:CVE-2019-14287
使用sudo命令时,你可以直接指定用户的uid来代替用户名。之所以会产生这个漏洞,是因为将用户id转换为用户名的函数会将-1(或与无效等效的4294967295)误认为是0,而0就是root用户的id。另外,通过-u选项指定的id值在密码数据库中不存在,因此不会运行任何PAM会话 模块。
漏洞利用
该漏洞是管理员在/etc/sudoers配置文件中使用了ALL关键词后造成的。当配置文件中存在*=(ALL, *)
形式的配置时,攻击者可以通过指定用户id为-1或者4294967295,从而以root权限在服务器上执行命令。
例如该条命令:boy ALL=(ALL, !root) /usr/bin/vim
该条命令的意思为:允许boy用户以非root权限之外的所有用户权限运行vim命令。
我们来看一下没提权之前的boy id,可以看到为1000,而root为0
我们用sudo -u#-1 id -u 测试一下,发现id返回为0
使用命令sudo -u#-1 vim
进入vim环境下,然后使用!/bin/bash
反弹一个shell
如图所示,我们已经提升至root权限,并能够查询的系统保存的密码信息。
修复建议
1、该漏洞影响sudo1.8.28之前的版本,低于该版本的建议升级版本
2、检查/etc/sudoers文件中是否存在ALL关键词的复合限制逻辑