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
sudo -u bleeping-test vim
在运行sudo命令时,用户可以使用这些uid代替用户名。例如,下面的命令将再次以“bleeping-test”的形式启动vim,但这一次是通过提供用户的UID。
sudo -u#1002 vim
苹果安全研究员Joe Vennix发现了一个漏洞,该漏洞允许用户使用sudo命令中的-1或4294967295 UID作为Root用户启动一个被允许的sudo命令。
例如,下面的命令可以利用这个bug将/usr/bin/id用户作为根用户启动,即使在/etc/sudoers文件中明确,不允许“test”用户这样做。
sudo -u#-1 id
虽然这个bug非常屌,但是必须记住,它只能在一个用户通过这个sudoers配置文件,可被许可了以去访问命令的情况下才能工作。如果它们不是,并且大多数Linux发行版默认情况下都不是,那么这个bug将不会有任何影响。
构建一个攻击
为了真正利用这个漏洞,用户需要配置一个sudoer命令,为了能够启动一个其他的命令。
在上面的sudoers命令示例中,我们有这样的命令:vim命令!
test ALL = (ALL, !root) /usr/bin/vim
如果我们利用 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