CVE-2019-14287:sudo权限绕过复现

CVE-2019-14287

Posted by hmoytx on October 16, 2019

CVE-2019-14287:sudo权限绕过漏洞复现

简介

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

复现

环境

这里我用了一台ubuntu的虚拟机,版本比较老,sudo是有问题的,用来测试。
默认情况下,在大多数 Linux 中,配置文件/etc/sudoers 文件中 RunAs 规约的 ALL 关键字允许 admin 或 sudo 组中的所有用户以系统中的任何有效用户身份运行任何命令。
先看版本,可以用来试试
191016_1
然后修改下配置文件
191016_2
解释下:

  • 其中的hmo表示用户名
  • 第一个ALL表示允许该用户在任意机器或者终端中使用sudo
  • 括号里面的(ALL,!root)表示命令可以被除了root以外的任意用户身份去执行
  • 最后一个ALL表示被允许执行的命令

    复现

    在低权限用户hmo的bash下执行命令

    sudo -u#-1 whoami
    or
    sudo -u#4294967295 whoami
    

    191016_3

总结

漏洞成因:sudo中是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,由于通过 -u 选项指定的 User ID 在密码数据库中不存在,因此不会运行任何 PAM 会话模块。
总的来说比较鸡肋,我就是水一篇文章,就这样。

预防

请将 sudo 升级到 1.8.28 最新版本,该漏洞会影响 1.8.28 之前的所有版本。