【漏洞复现】Mysql UDF提权

前言:

UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,其实就像使用本地MySQL函数如 user() 或 concat() 等。

那么我们该如何使用UDF文件呢?
在MySQL默认安装的里面是不存在这个文件的。

那么如果假设该文件存在被攻击者上传到路径:C:\phpStudy\MySQL\lib\plugin(mysql>5.1 默认\lib\plugin文件夹不存在)。
在这里插入图片描述

  • 当 MySQL< 5.1 版本时,将 .dll 文件导入到 c:\windows 或者 c:\windows\system32 目录下
  • 当 MySQL> 5.1 版本时,将 .dll 文件导入到 \lib\plugin 目录下 (lib\plugin目录默认不存在,需自行创建)

此时udf.dll文件中定义了名为 sys_eval() 的 MySQL 函数,该函数可以执行系统任意命令。但是如果我现在就打开 MySQL 命令行,使用 select sys_eval(‘whoami’);的话,系统会返回 sys_eval() 函数未定义。因为我们仅仅是把 udf.dll 放到了 lib/plugin 目录下,并没有引入,如果没有引入包,那么这个包里的类你是用不了的。
所以,我们应该把 udf.dll 中的自定义函数引入进来。看一下官方文档中的语法:

create function sys_eval returns string soname 'udf.dll';
  • sys_eval是我们想引入的函数
  • shared_library_name(共享包名称),即 udf.dll

引入函数:create function sys_eval returns string soname 'udf.dll';
在这里插入图片描述
执行命令:select sys_eval("whoami");

在这里插入图片描述

删除引用:drop function sys_eval;
在这里插入图片描述

复现步骤:

攻击机:192.168.1.106(win10)
被攻击机:192.168.30.143(WinServer2008)

此时攻击机(192.168.1.106)已经获得了被攻击机(192.168.30.143)的一个webshell,并且也顺利的找到了一个注入点。
通过注入点得知mysql版本大于5.1
在这里插入图片描述
通过–sql-shell执行命令找到mysql安装路径。
在这里插入图片描述
通过webshell找到Mysql安装路径,并且在\lib目录下新建plugin目录(这里注意权限, 实战中如果权限不够高的话,是无法直接创建目录的)
在这里插入图片描述
接下来,我们需要做的就是生成udf.dll文件,默认sqlmap目录E:\Python38\sqlmap\data\udf\mysql
是有windows和linux下的使用的dll文件的。

在这里插入图片描述
但是sqlmap中的文件是通过编码的,如果需要使用的话是需要sqlmap/extra/cloak目录下的cloak.py文件进行解码。
在这里插入图片描述
判断mysql是为32位还是64位,可以看到为32位。
在这里插入图片描述
使用sqlmap中32位udf.dll文件,进行解密操作,生成udf.dll文件。

python2 cloak.py -d -i E:\Python38\sqlmap\data\udf\mysql\windows\32\lib_mysqludf_sys.dll_ -o udf.dll(这里udf.dll文件名可以自定义)

在这里插入图片描述
通过webshell上传udf.dll文件到lib\plugin 目录下。

在这里插入图片描述
通过webshell找到mysql中root密码,一般位置在“C:\phpStudy\MySQL\data\mysql\user.MYD”
在这里插入图片描述
通过彩虹表解开密码后,通过菜刀内置数据库管理连接mysql数据库,进行函数引用:

在这里插入图片描述
权限提升:
在这里插入图片描述
删除引用:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值