CVE-2019-14287:linux sudo bug

ang010ela 漏洞 2019年10月16日发布
Favorite收藏

导语:Linux SUDO bug可使用用户以root权限运行命令。

研究人员在Linux SUDO命令中发现了一个bug,非授权的用户可以利用该bug以root权限运行命令。幸好该漏洞不是以标准配置下运行,因此大多数Linux服务器不受影响。

在Linux操作系统下执行命令时,非特权的用户可以用sudo命令来以root权限来运行命令,前提是要知道root用户密码或提前被授予权限。

可以通过在/etc/sudoers配置文件中加入特殊命令来配置Sudo命令为允许用户以其他用户运行命令。比如,下面的命令就可以让用户test以其他非root用户来运行/usr/bin/vim和 /usr/bin/id命令。

test ALL = (ALL, !root) /usr/bin/vim
test ALL = (ALL, !root) /usr/bin/id

Test用户要运行上面的命令,就可以用sudo -u来指定要运行的用户。比如:

sudo -u bleeping-test vim

在Linux中创建用户时,每个用户都会有一个UID。如下图所示,test用户的UID为1001,用户bleeping-test的 UID 为1002。

UIDs of users 

用户UID

用户在使用sudo命令时还可以用UID来替代用户名。比如,下面的命令就用bleeping-test用户的UID来替代用户名了:

sudo -u#1002 vim

漏洞分析

苹果安全研究人员 Joe Vennix 发现sudo命令中存在一个安全漏洞,用户利用该漏洞可以通过在sudo命令中将UID 设为-1或4294967295来以root权限运行sudo命令。

比如,下面的命令就利用该漏洞来以root权限启动 /usr/bin/id ,但是test用户的 /etc/sudoers文件中是没有这样的权限的。

sudo -u#-1 id

使用该bug来运行/usr/bin/id命令来获取root权限如下所示:

 Using the sudo bug to run /usr/bin/id as root

利用sudo bug以root权限运行/usr/bin/id

虽然该bug很强大,但是只有通过sudoers配置文件授予用户这样的权限该漏洞才可能运行。如果没有配置的话,该漏洞是无法利用的,而大多数Linux发行版中默认是不配置的。

攻击

为了利用该漏洞,用户需要为命令配置sudoer指令来启动其他命令。

在下面的例子中,研究人员使用的是VIM命令:

test ALL = (ALL, !root) /usr/bin/vim

在VIM中,用户可以用:!命令启动其他程序。比如,在VIM中,可以用!ls 来在当前文件夹中执行ls命令。

如果使用 sudo -u#-1 vim命令来利用该漏洞,VIM就会以root启动。用户可以执行 !whoami 命令来进行确认。

VIM running as root 

VIM以root运行

可以看到VIM 以root权限启动了,其中执行的所有命令都是root权限运行的。

在被黑的机器上就可以用这样的方法来启动root shell,然后执行任意命令。

攻击的POC视频如下:

Launching a root shell 

启动root shell

Sudo v1.8.28之前版本受到该漏洞的影响。最新发布的sudo 1.8.28版本修复了该漏洞,研究人员建议用户尽快升级到1.8.28版本。

更多技术细节参见:https://www.sudo.ws/alerts/minus_1_uid.html

本文翻译自:https://www.bleepingcomputer.com/news/linux/linux-sudo-bug-lets-you-run-commands-as-root-most-are-unaffected/如若转载,请注明原文地址: https://www.4hou.com/vulnerable/20881.html
点赞 3
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论