Linux 曝出严重安全漏洞,受限用户亦可提权至 Root 身份运行任意命令!(内附解决方案)

file


本文首发于:微信公众号「运维之美」,公众号 ID:Hi-Linux。html

「运维之美」是一个有情怀、有态度,专一于 Linux 运维相关技术文章分享的公众号。公众号致力于为广大运维工做者分享各种技术文章和发布最前沿的科技信息。公众号的核心理念是:分享,咱们认为只有分享才能使咱们的团体更强大。若是你想第一时间获取最新技术文章,欢迎关注咱们!数据库

公众号做者 Mike,一个月薪 3000 的杂工。从事 IT 相关工做 15+ 年,热衷于互联网技术领域,认同开源文化,对运维相关技术有本身独特的看法。很愿意将本身积累的经验、心得、技能与你们分享交流,篇篇干货不要错过哟。若是你想联系到我,可关注公众号获取相关信息。vim


做为 Linux 中最常使用的重要实用程序之一,sudo 几乎安装在每一款 UNIXLinux 发行版上的,以便用户调用和运行核心命令。然而近期这个命令曝出的一个严重的本地提权漏洞,即使配置中明确不容许 root 用户访问,该漏洞仍可容许恶意用户或程序,在目标 Linux 系统上以 root 用户身份执行任意命令。安全

sudo 做为一个系统命令,其容许普通用户以特殊权限来运行程序或命令,而无需切换使用环境。bash

漏洞详情

据悉,该漏洞由苹果信息安所有门的 Joe Vennix 追踪发现(漏洞的 CVE ID 为 CVE-2019-14287 )。服务器

若是想要利用这个漏洞,只需按如下的方式运行便可。微信

$ sudo -u#-1 id -u

或者运维

$ sudo -u#4294967295 id -u

使用 sudo 命令时,你能够直接指定用户的 UID 来代替用户名。函数

之因此会产生这个漏洞,是由于将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,因为经过 -u 选项指定的 User ID 在密码数据库中不存在,所以不会运行任何 PAM 会话模块。post

如何利用漏洞

CVE-2019-14287 是管理员在配置文件中用了 ALL 关键词后形成的。当 /etc/sudoers 文件中存在 *=(ALL, *) 形式的配置时,本地攻击者能够经过指定用户 ID 为 -1 或者 4294967295,从而以 root 权限在服务器上执行命令。例如:

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

当存在这种 ALL=(ALL, !root) 形式的配置时,表示对被切换到的用户进行了 ALL(全部用户) 和其余用户的剔除操做。例如上面的含义就是:容许 user_name 用户以非 root 权限以外的全部用户权限运行 vim 命令。

下面咱们来看一个实例,首先配置一个容许 r7 用户以非 root 权限以外的全部用户权限运行 vim 命令的规则。

而后,直接以 r7 用户身份切换为 root 来运行 vim 命令。

咱们能够看到,命令执行请求被拒绝了。

接着,咱们利用漏洞中所描述的方式进行身份切换。

咱们能够看到成功切换到为 root 用户,并打开了 /etc/shadow 文件。

/etc/shadow 文件只有具有 root 权限的用户才能进行访问。

所以,咱们能够很轻易地利用该漏洞在 vim 命令下启动一个具备 root 权限的 Shell,而后执行任何命令。

# 在 vim 中执行外部命令,下面这个就表示执行一个带有 root 权限的 SHELL。
:!/bin/bash

漏洞修复建议

  1. 该漏洞影响最新版本 1.8.28 以前的全部 Sudo 版本,目前各大 Linux 发行版都已经向用户推送最新版本,请及时升级到 sudo 1.8.28 版本。

  2. 检查 /etc/sudoers 是否存在 ALL 关键词的复合限制逻辑。

参考文档

  1. https://www.google.com

  2. https://www.cnbeta.com/articles/tech/899229.htm

  3. https://www.anquanke.com/post/id/188743

  4. https://nosec.org/home/detail/3045.html


相关文章
相关标签/搜索