漏洞简介


sudo命令:以系统管理者的身份执行指令配置文件:/etc/sudoers

CVE-2019-14287 (Linux sudo命令)漏洞复现

漏洞形成的原因

配置文件中明确表明不允许以 root 用户进行访问,但通过该漏洞,恶意用户或程序仍可在目标 Linux 系统上,以 root 用户身份执行任意命令。

CVE-2019-14287 (Linux sudo命令)漏洞复现

对应格式及注释如下:

CVE-2019-14287 (Linux sudo命令)漏洞复现

漏洞影响版本:sudo 1.8.28之前的所有版本

漏洞修复:将sudo包更新至最新版本


漏洞复现


漏洞复现环境

centos release 6.10

CVE-2019-14287 (Linux sudo命令)漏洞复现

sudo 1.8.6p3

CVE-2019-14287 (Linux sudo命令)漏洞复现

添加用户:useradd test

CVE-2019-14287 (Linux sudo命令)漏洞复现

CVE-2019-14287 (Linux sudo命令)漏洞复现

修改配置文件:vim /etc/sudoers

CVE-2019-14287 (Linux sudo命令)漏洞复现

切换到test用户,查看id

CVE-2019-14287 (Linux sudo命令)漏洞复现

使用sudo命令尝试执行了以下命令:均不成功!

CVE-2019-14287 (Linux sudo命令)漏洞复现

CVE-2019-14287 (Linux sudo命令)漏洞复现

漏洞利用sudo -u#-1     或者   sudo -u#4294967295(-1 的补码,其内部是按无符号整数处理的)

CVE-2019-14287 (Linux sudo命令)漏洞复现

CVE-2019-14287 (Linux sudo命令)漏洞复现

通过以上方式绕过配置文件限制,以root身份成功执行命令!


漏洞原理分析


官方提交修复代码:https://www.sudo.ws/repos/sudo/rev/83db8dba09e7

CVE-2019-14287 (Linux sudo命令)漏洞复现

进入lib/util/strtoid.c中发现,对id为-1做了限制,表示禁止改变

CVE-2019-14287 (Linux sudo命令)漏洞复现

llval 变量为解析后的值,不允许 llval 为 -1 和 UINT_MAX(4294967295)

接下来打算深入分析一下的小伙伴可参考:https://paper.seebug.org/1057/

相关文章: