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

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

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

文章来源:https://www.bleepingcomputer.com ... nstalls-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

关于作者

评论6次

要评论?请先  登录  或  注册