sudo提权(CVE-2019-14287)复现及原理分析
2019-11-14 17:43:00 Author: mp.weixin.qq.com(查看原文) 阅读量:97 收藏

点击上方“凌天实验室”,“星标或置顶公众号”

漏洞、技术还是其他,我都想第一时间和你分享

1

前言

sudo,也就是以超级管理员身份运行(superuser do)的意思。sudo是 Linux中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每一款基于UNIX或 Linux的操作系统上,也是这些操作系统的核心命令。作为一个系统命令,普通用户可通过它以特殊权限来运行程序或命令(通常以root用户身份运行命令),而无需切换使用环境。

管理员可以配置 sudoers 文件,来定义哪些用户可以运行哪些命令。即便限制了用户以 root 身份运行特定或任何命令,该漏洞也可允许用户绕过此安全策略,并完全控制系统。

2

复现

准备条件:

1.sudo 版本 小于1.8.28

sudo -V 查看sudo版本

2.配置sudoers安全策略

vi /etc/sudoers

新建普通用户/设置密码:useradd/passwd

切换到test用户执行mkdir命令,提示没有权限

提权:

sudo -u#-1 mkdir testsudo -u4294967295 mkdir test2

可见目录成功以root身份创建属组为test

3

修复及影响

该漏洞影响最新版本 1.8.28 之前的所有 Sudo 版本。

  • 升级到 sudo 1.8.28

  • 检索/etc/sudoers 是否存在 ALL 关键词的复合限制逻辑

  • 目前厂商已发布升级补丁以修复漏洞,补丁获取链接:

  • https://www.sudo.ws/alerts/minus_1_uid.html

4

总结分析

一直不明白为什么要配置sudoers才能触发此漏洞,特意去了解了一下sudo/sudoers

上文复现过程中我们在sudoers加了这样一条配置:

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

意为:将授权用户test在所可能出现的主机上切换到非root的所有用户执行/usr/bin/mkdir

  • test表示将要授权的用户

  • 第一个ALL表示所有主机

  • (ALL,!root) 除root外的所有用户

  • /usr/bin/mkdir 表示授权的命令 命令都是使用绝对路径, 这是为了避免目录下有同名命令被执行,从而造成安全隐患。

再来看一下sudo命令执行过程 :

sudo命令:将当前用户切换到超级用户下,或切换到指定的用户下,然后以超级用户或其指定切换到的用户身份执行命令,执行完成后,直接退回到当前用户。

具体工作过程如下:

1->当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限   
2–>确认用户具有可执行sudo的权限后,让用户输入用户自己的密码确认   
3–>若密码输入成功,则开始执行sudo后续的命令
4–>sudo -u#-1 mkdir

Sudo 开发者说到:“即便 RunAs 规约明确禁止 root 用户访问,但如果 Runas 规约文件中首先列出了 ALL 关键字,具有 sudo 权限的用户就可以使用它来以 root 身份运行任意命令。

已经知道在第一步已经走过sudoers文件,说明咱的Sudo -u#-1 or 4294967295 是拥有权限的而且sudo到非root,然后在执行sudo -u#-1 mkdir命令时将用户ID转换为用户名的函数会将-1(或无效等效的4294967295)误认为是0,而这正好是root用户User ID。此外,由于通过-u选项指定的User ID在密码数据库中不存在,因此不会运行任何PAM会话模块。

有什么问题还望各位老大指正,欢迎发言

凌天
实验室

凌天实验室,是安百科技旗下针对应用安全领域进行攻防研究的专业技术团队,其核心成员来自原乌云创始团队及社区知名白帽子,团队专业性强、技术层次高且富有实战经验。实验室成立于2016年,发展至今团队成员已达35人,在应用安全领域深耕不辍,向网络安全行业顶尖水平攻防技术团队的方向夯实迈进。


文章来源: http://mp.weixin.qq.com/s?__biz=MzU5Mzc4MTIyNw==&mid=2247485052&idx=1&sn=870ef99aa430df5efa580d3430954da3&chksm=fe0a0ef8c97d87ee8f5a1b028b036526ab35573f7f8359e442267a2883f2590914a51ce41d36#rd
如有侵权请联系:admin#unsafe.sh