【转载翻译】Linux中sudo命令的bug导致Root权限命令执行,大多数机器不受影响

2019-10-15 14:02:46 6 2012

LINUX中一个缺陷,配置sudoer命令,启动vim,导致Root权限命令执行,但它仍然只能在非标准配置下使用,而且不影响大多数Linux用户。

文章来源:https://www.bleepingcomputer.com/news/linux/linux-sudo-bug-lets-you-run-commands-as-root-most-installs-unaffected/

Linux sudo命令中的一个漏洞,它允许非特权用户作为Root用户执行命令。高兴的是,这个漏洞只在非标准配置下工作,大多数的Linux服务器不受影响。

开始讨论这个漏洞之前,有一些关于sudo命令如何工作以及如何配置它的背景信息是很重要的。

在Linux操作系统上执行命令时,非特权用户可以使用sudo(super user do)命令作为Root用户执行命令,只要他们获得了权限或者知道Root用户的密码。

sudo命令还可以通过向/etc/sudoers配置文件添加特殊的命令,允许用户以另一个用户的身份运行命令。

例如,下面的命令允许用户“test”以除root用户以外的任何用户的身份运行 /usr/bin/vim 和 /usr/bin/id 的命令。
test ALL = (ALL, !root) /usr/bin/vim
test ALL = (ALL, !root) /usr/bin/id
比如“test”用户去执行上述命令之中的一条,他们将使用一个带 -u 参数的 sudo 命令来指定一个用户。例如,下面的命令将以用户“bleeping-test”启动vim。
sudo -u bleeping-test vim 
在Linux中创建用户时,每个用户都有一个UID。如下图所示,用户“test”的UID为1001,“bleeping-test”的UID为1002。



在运行sudo命令时,用户可以使用这些uid代替用户名。例如,下面的命令将再次以“bleeping-test”的形式启动vim,但这一次是通过提供用户的UID。
sudo -u#1002 vim
sudo的漏洞

苹果安全研究员Joe Vennix发现了一个漏洞,该漏洞允许用户使用sudo命令中的-1或4294967295 UID作为Root用户启动一个被允许的sudo命令。

例如,下面的命令可以利用这个bug将/usr/bin/id用户作为根用户启动,即使在/etc/sudoers文件中明确,不允许“test”用户这样做。
sudo -u#-1 id
在/usr/bin/id命令中使用这个bug来获得Root权限,如下所示。



虽然这个bug非常屌,但是必须记住,它只能在一个用户通过这个sudoers配置文件,可被许可了以去访问命令的情况下才能工作。如果它们不是,并且大多数Linux发行版默认情况下都不是,那么这个bug将不会有任何影响。

构建一个攻击

为了真正利用这个漏洞,用户需要配置一个sudoer命令,为了能够启动一个其他的命令。

在上面的sudoers命令示例中,我们有这样的命令:vim命令!
test ALL = (ALL, !root) /usr/bin/vim
在vim中,用户可以使用 :! 启动另一个程序,例如,在vim中,您可以输入!ls来执行当前文件夹中的ls命令。

如果我们利用 sudo -u#-1 vim 来利用这个漏洞,vim将作为Root启动。然后,可以通过执行!whoami命令来确认。



现在vim作为Root启动了,从它这里执行的任何命令也作为Root权限去运行。

这可以很容易地启动一个Root shell,然后可以在这个机器上执行任何命令,下面的演示了这种攻击。



虽然这个bug明显很屌大,但它仍然只能在非标准配置下使用,而且不影响大多数Linux用户。

对于那些为用户使用sudoers命令的铁子们,应该尽快升级到sudo 1.8.28或更高版本。

相关文章:

Hacker Selling User Info Stolen From Prostitution Forums
HP Touchpoint Analytics LPE Vulnerability Affects Most HP PCs
Some Windows 10 Users Can't Use Firefox for Downloads
Actively Exploited Android Zero-Day Impacts Google, Samsung Devices
eGobbler Malvertiser Uses WebKit Exploit to Infect Over 1 Billion Ads

关于作者

EviLAsH12篇文章349篇回复

脚本小子

评论6次

要评论?请先  登录  或  注册
  • 6楼
    2019-10-16 19:57
    tonybreak

    认真研究了下,发现我一般只会用sudo -i 去切换root权限了。这个指定用户配置的权限,一般是用在跳板机上面的吧

    1

    我都是sudo -s

  • 5楼
    2019-10-16 11:34

    我按照文章方法利用vim复现,如下 1.查看版本低于1.8.28 2.打开 /etc/sudoers 添加行21的内容 3.sudo vim 不行,sudo -u#-1 vim 成功 成功获取Root权限,执行命令。

  • 4楼
    2019-10-16 09:46
    chickpr

    一般不都是通过sudoers文件配置么,文中“并且大多数Linux发行版默认情况下都不是”啥意思,请教下,没咋明白。

    1

    我的理解是,这个默认的情况下一般 添加新用户可能直接给了sudo的所有权限,所以就不存在了这个所谓的漏洞。 而有些特殊要求下,比如一些公司跳板机可能限制用户只能执行指定的命令,就会有他这种配置,可能就会存在这个bug。比如本身给他只有sudo vim的,他可以借助这个vim去执行bash了。 昨天试了下,没有重现~好气呀~

  • 3楼
    2019-10-15 23:27

    一般不都是通过sudoers文件配置么,文中“并且大多数Linux发行版默认情况下都不是”啥意思,请教下,没咋明白。

  • 2楼
    2019-10-15 18:13

    认真研究了下,发现我一般只会用sudo -i 去切换root权限了。这个指定用户配置的权限,一般是用在跳板机上面的吧

  • 1楼
    2019-10-15 17:16

    直接获取root权限shell sudo -u#-1 /bin/bash or sudo -u#4294967295 /bin/bash