提权 --Mysql提权

一、适用场景

  • 拿到的Web服务器权限较低;
  • 目标服务器有mysqld服务,且拥有Mysql的system权限

二、UDF提权

2.1 UDF介绍

2.1.1 含义

  UDF(User Defined Functions,用户自定义函数)Mysql的一个扩展接口,用户可以添加新函数对MYSQL的功能进行补充。C++函数编写,文件后缀为 .dll。

2.1.2 UDF使用

这里我们使用下面提权过程中使用的lib_mysqludf.dll文件来阐述UDF能干啥?
lib_mysqludf.dll(sqlmap工具自带)文件中提供了如下函数,可动态加载执行任意系统命令:

函数 作用
sys_eval () 执行任意系统命令,并将输出返回
sys_exec () 执行任意系统命令,并将退出码返回
sys_get () 获取一个环境变量
sys_get () 创建或修改一个环境变量

如果没有UDF库文件(.dll)没有在\plugin目录下的话,执行会报错:(不能打开共享库)
在这里插入图片描述
因此,如果想使用自定义函数功能,必须将UDF库文件放入到指定的位置下才可以,这个也是UDF提权的核心所在!

2.1.3 注意点

官网对UDF安全项说明:为了防止滥用用户定义的函数:

  • 要创建 / 删除自定义函数必须拥有数据库的insert或delete权限(添加和删除行)
  • Mysql版本<5.1之前,UDF库文件需导入到系统目录:C:\Windows / C:\Windows\system32下;
  • Mysql版本>=5.1之后,UDF库文件必须放入服务器的插件目录中(~/lib/plugin目录下,该目录由plugin系统变量的值给出,默认不存在,如提权需设法创建)。

Tips 1:Mysql5.1版本前和版本后的plugin_dir目录?

  • Mysql<5.1版本,查看plugin_dir目录:
    在这里插入图片描述
  • Mysql>=5.1版本,查看plugin_dir目录:
    在这里插入图片描述

Tips2. 关于udf官方解释,官网传送门

  • 在这里插入图片描述

2.2 UDF提权操作

2.2.1 核心操作

mysql<5.0,将udf库文件导出的路径随意;
5.0 <= mysql <+ 5.1 ,将udf库文件传入到系统目录下;
mysql>5.1,将udf库文件传入到/lib/plugin目录下(默认不存在,因此需要建立plugin也是提权要点限制条件之一)

2.2.2 提权限制

限制1
  • mysql开启了远程连接(可以远程连接执行mysql命令)
限制2
  • secure_file_priv值为空(mysql允许将数据导出到本地,远程传入UDF库文件到目标服务器本地指定目录)
限制3
  • 创建/plugin目录(高版本的mysql数据库默认没有此目录需要远程创建)
限制4
  • 免杀(传入的UDF库文件未被杀软杀掉)

2.2.3 操作过程

A. 环境展示

Windows10(攻击机,ip:192.168.3.4)
Windows 2008 R2(虚拟机,ip:192.168.7.131)
Mysql 5.5.3(PHPStudy 2018)
在这里插入图片描述

B. 准备DLL文件

自动化注入工具sqlmap已集成lib_mysqludf_sys库文件:(具有和操作系统进行交互功能的UDF库,官网说明传送门
其位置:
在这里插入图片描述
需要针对对方Mysql版本使用对应的dll文件才能生效
这里的dll文件需要经过解码才能使用,接下来对dll文件进行解码:

Tips:sqlmap自带的shell或一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用,可以利用自带的解码工具cloak.py进行解码(目录:\sqlmap\extra\cloak\cloak.py)

》》进入到cloak目录下执行如下命令即可解码,生成UDF库文件
cloak.py -d -i <要解码文件>
在这里插入图片描述

C. 判别能否外联

目的:首先查看mysql是否允许远程连接:
》》Nmap探测目的端口是否开放了mysql服务(已开放)
在这里插入图片描述
》》测试是否开启远程连接,这里提供三种方法
方法一: 启动mysql服务本地尝试(返回如下不允许连接):
在这里插入图片描述

方法二: 使用客户端管理软件连接试探(返回如下则不允许远程连接,推荐):
在这里插入图片描述
方法三: Hydra 远程爆破,显示如下则不允许远程连接
在这里插入图片描述

Tips:这里为了演示提权方法,先允许数据库远程连接,操作请参考:Mysql开启远程连接
在这里插入图片描述

D. 远程传入文件

目的:将sqlmap已解码后的dll文件传入到指定目录下!

Tips:这里为了演示已满足提权限制2(secure_file_priv值为空,这样才能导入到文件到本地!),查看修改变量值secure_file_priv值方法可参考:Mysql导出数据之全局变量secure_file_priv
在这里插入图片描述

A.
A. 从UDF库中引入自定义函数并执行

三、MOF提权

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章