概述
最近出了一个mysql提权漏洞,趁热练练手。
利用前提
- mysql_hookandroot_lib.c
- mysql拥有my.cnf写权限
- mysql root用户可执行
set global general_log_file = 'my.cnf';sql语句 - 需要file权限
环境搭建
安装mysql 5.6.32
|
|
版本信息
|
|
进程属性
|
|
可以看出,mysqld_safe封装脚本是以root权限启动的,而主要的mysqld进程是用较低权限的mysql用户启动的。
复现准备
修改my.cnf权限
创建attacker用户,并赋予file,select,insert权限,创建用于实验的数据库pocdb
复现
修改一下mysql_hookandroot_lib.c的ip,port和my.cnf的位置:
修改一下0ldSQL_MySQL_RCE_exploit.py的port和my.cnf的位置,然后执行
执行成功后会在my.cnf里添加如下:
虽然直接把日志写在my.cnf里重启mysql时会执行失败,但是不用担心,config_cleanup() 这个函数会清除这些。
重启mysql