一、概述
MySql提权的三种方式:
1.udf提权
2.mof提权
3.启动项提权
二、MySql提权的必要前提
---获取MySql的root账号的密码
获取方法:
1.查看数据库的配置文件
在Linux系统中,MySQL的配置文件位于/etc/mysql/my.cnf
user=root
password=root
存在/etc目录下不存在mysql配置文件的问题,参考:etc无mysql配置文件 - 老白网络
在windows系统中,配置文件my.ini在 MySql 安装的根目录下,也有可能在隐藏文件夹“ProgramData”下。
2.下载mysql安装路径下的数据文件并破解
安装路径下的data目录存放的是数据库的数据信息
root账号密码存放在user表中
完整路径=安装路径+data+mysql+user.myd
3.暴力破解
三、UDF提权
1.原理:
- UDF用户自定义函数,可以通过添加新的函数对mysql服务进行功能扩充。
- 添加执行命令、获取环境变量、创建修改环境变量等自定义函数。
- 利用了服务器上MySql数据库服务的高权限来执行系统命令添加高权限用户来实现提权。
2.利用条件
- MySql数据库版本
- 账号具有对MySql的插入和删除权限
- 可以将udf.dll写入到相应目录的权限
- 导出目录可写
- mysql配置中,secure_file_priv=""
windows环境:
- Windows 2000、XP、2003(windows环境)
linux环境:
- 系统中的selinux处于关闭状态
- 具有root权限,且mysql数据库以system权限启动
secure_file_priv是用来限制mysql数据库导出的位置/目录
可以去通过show variables like '%secure%'; 这个指令去查看secure_file_priv 的状态
secure_file_priv的不同情况
- 如果为空,不做目录限制,即任何目录均可以。
- 如果指定了目录,MySQL 会限制只能从该目录导入、或导出到该目录。目录必须已存在,MySQL 不会自动创建该目录。
- 如果设置为
NULL
,MySQL 服务器禁止导入与导出功能。
3.实操经验总结
-
\sqlmap\data\udf\mysql\windows\64目录下生成一个dll的文件lib_mysqludf_sys.dll,这个我们就可以直接拿来利用
攻击者可以利用lib_mysqludf_sys提供的函数执行系统命令。
函数:
sys_eval,执行任意命令,并将输出返回。
sys_exec,执行任意命令,并将退出码返回。
sys_get,获取一个环境变量。
sys_set,创建或修改一个环境变量。
- MySql版本高于5.1,需要自行创建导出文件,可以利用NTFS ADS溜来创建文件夹。但是通常可以利用NTFS ADS流创建文件,直接通过webshell创建文件夹也没问题。