这几年大热的bug时间,就是Linux sudo权限绕过漏洞CVE-2019-14287事件,对此,我们做了一些研究。虽然各大平台已经把核心的东西晒出来了,但是,因为目前没有说的特别完整的,所以,笔者研究一番后,总算是把这个过程都弄明白了。
关于sudo的定义,我们就不细说了,不了解的小伙伴可以问度娘。这里我们主要说一下漏洞的问题。
本漏洞存在于sudo 1.8.28之前的版本,随便打开个虚拟机看看当前版本。如果版本没有问题,那就直接开撸。
先附上发现者苹果信息安全部门Joe Vennix的原文:
从这里我们知道,要复现这个漏洞是有前提的,上文中作者赋予bob用户通过sudo命令执行vi命令的权利,但是只拥有除了root权限以外的权限,很明显,这样以来,是不能修改和访问root用户和用户组的文件的。
而如果不添加这个权限,bob是不能执行sudo命令的,举个例子:
文件中并没有赋予其他用户使用sudo命令的权利,我们切换到common用户,执行sudo命令:
很明显,common用户不能使用sudo,我们将common用户添加到sudoers中,也赋予非root权限执行vi命令:
首先赋予sudoers root用户写的权利,原本sudoers是没有写的权利的:
然后将非root使用vi命令的权利赋给common:
我们现在来试试common的sudo vi:
OK,我们可以使用sudo vi修改文件了,但是现在没有root权限,所以无法修改root组的/etc/passwd文件。
我们知道,root用户的id是0,如果我们能将common用户的id也变成0就可以执行root的权限了,这也就是漏洞的原理所在,当前sudo版本会将id为-1和4294967295的用户作为id为0来进行识别,所以我们只需要将uid指定为0或4294967295均可绕过上面的权限控制执行root权限:
OK,这样我们就可以让common用户以root权限执行vi命令了。
文章来源:网络 版权归原作者所有
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理