Sudo漏洞分析(CVE-2019-14287)

漏洞介绍

最近的国外的团队跟踪并披露了该漏洞,报告中发现,在所有sudo版本低于1.8.29 的Linux机器,均受到该漏洞的影响。

CVE编号:CVE-2019-14287

此漏洞可以使用户拥有权限运行其他用户命令。

漏洞细节

sudo允许非特权用户以root用户身份执行命令,问题在于在sudo id 在低于1.8.29 版本中以任意用户实现了运行命令的方式,虽然攻击的利用方式,需要对本地配置进行修改,利用此漏洞需要恶意用户具有以任何用户(root用户除外)身份运行命令的特权,如果sudoers文件ALL中Runas参数带有特殊值,则可以利用成功。

漏洞分析

查看Linux机器上的Sudo版本

sudo -V | grep 'Sudo version'

在这里插入图片描述
ok 我们可以看到版本低于1.8.29 那么就受到这个漏洞的影响

sudo程序本身是一个设置的SUID位的二进制文件

检查一下他的权限:

ls -l /usr/bin/sudo

在这里插入图片描述

它的所有者是root,所以每个用户都已像root那样执行该程序。设置了SUID的程序在运行时可以给使用者以所有者的EUID

sudo的配置都记录在/etc/sudoers文件中,配置文件知名哪些用户可以执行哪些命令。要使用sudo,用户只须提供sudo用户的密码。

那么本次漏洞的命令就是

sudo -username#uidUSer

因为需要用户执行此命令,那么需要用户的sudoers中的runas说明具有特殊值ALL

查看一下配置文件/etc/sudoers

在这里插入图片描述
配置文件分析

%开头,代表”将要授权组“,例如其中的%sudo

%不开头的,代表”将要授权的用户“,例如其中的root

root ALL=(ALL:ALL) ALL 进行分析

第一个ALL的意思是root用户在那些服务器上登录本服务器来执行sudo命令。
第二个和第三个ALL则表示可以切换到任何(用户:组)
第四个为ALL,则表示可以执行任意命令

修改后那么在恶意用户下,则可以运行一下命令将自己升级为root

sudo -u#-1 id -u

或者

sudo -u#4294967295 id -u

在32位或者64位机器中,C语言中整数存储占用4个字节,一个字节8位,共计32位

整数在计算机中以补码形式存储,-1的补码为32个1组成的二进制数,按无符号数输出这个二进制数

就是2^32-1=4294967295

由于采用补码表示整数,计算机本身不关心整数是正数还是负数,统一按无符号数对待。具体输出时,显示为什么数,计算机按编程者的格式要求进行处理输出。如32个1组成的二进制数,按%d输出就是-1,按无符号输出就是 4294967295。

这也就是在-1和4294967295的时候 sudo 对其ID值无效,实际上他们返回的值为0

具体实践

创建的实验账号

  • 添加一个系统帐号 test 作为实验所用:
  • </
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值