UDF提权

1.什么是udf

UDF是mysql的一个拓展接口,UDF(User defined function)可翻译为用户自定义函数,这个是用来拓展Mysql的技术手段。用户可以通过UDF添加自定义函数,在sql语句中直接调用。

2.udf使用

假设用户自定义了一个名为“udf.dll”的udf文件,其中包含了cmdshell函数。函数的功能为执行系统命令。

1) 为了在mysql中使用此函数,须将udf.dll放在特定文件夹下。

1.Mysql版本大于5.1,udf.dll文件必须放在MySQL安装目录的lib\plugin文件夹下。(plugin文件夹默认不存在,需要创建)。

2.Mysql版本小于5.1:
如果是 win 2000 的服务器,我们则需要将 udf.dll 文件导到 C:\Winnt\udf.dll 下。
如果是 win2003 服务器,我们则要将 udf.dll 文件导出在 C:\Windows\udf.dll 下。

2)在mysql中引用自定义函数

create function cmdshell return string soname 'udf.dll'

3 )执行命令

select cmdshell("whoami");

3.udf提权条件

1.获得一个数据库账号,拥有对MySQL的insert和delete权限。以root为佳。

2.拥有将udf.dll写入相应目录的权限。

4.udf提权过程

测试环境:

目标操作系统:win10

mysql版本:5.5.53

1)获取mysql安装路径

select @@basedir;

2)创建plugin文件夹

网上有说可以使用ntfs数据流创建,测试失败。。

select 'test' into dumpfile 'D:\\phpStudy\\MySQL\\lib\\plugin::$INDEX_ALLOCATION';

为后续测试,最后手动创建plugin文件夹。

3)创建临时的表保存udf.dll 16进制内容

4)使用dumpfile将临时表中的udf内容写到指定路径

SELECT udf FROM Temp_udf INTO DUMPFILE '<path>';

5)删除临时表

6)创建自定义函数

7)执行cmdshell

5.UDF提权难点

1.高版本mysql中有个参数至关重要,就是secure-file-priv,这个参数限制了MySQL的导出。该参数为NULL时不允许导出、该参数为空时允许在任意文件夹中导出、该参数为某文件夹时允许在该文件夹中导出。

使用load_file、dumpfile等函数时需要在my.ini中奖secure-file-priv设为空:

2.plugin文件夹的创建,未解决

(通过将新值传递给mysqld来更改插件目录变量?

编写一个新的mysql配置文件并将其传递给mysqld?)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 天闲的无聊DEDECMS搞了几个站。没事做提权吧。真的很久很久没有玩这东西了。测试经典的UDF.dll提权一次性成...
    流弊的小白阅读 1,762评论 0 0
  • 最近在测试一个项目,遇到了MYSQL数据库,想尽办法提权,最终都没有成功,很是郁闷,可能是自己很久没有研究过提权导...
    CanMeng阅读 652评论 0 2
  • 原文:【吐血撰写】渗透测试技术基础——提权技术基础大全 **关于提权我们要想到这三个问题:**1 什么是提权?2...
    i春秋论坛阅读 6,106评论 0 19
  • sqlmap用户手册 说明:本文为转载,对原文中一些明显的拼写错误进行修正,并标注对自己有用的信息。 ======...
    wind_飘阅读 2,127评论 0 5
  • 今天上午刚开始感觉时间过的好慢好慢,我感觉应该十点半多的时候,一看时间,还不到十点。。。。也是醉了,小朋友都还在调...
    小仙女1020阅读 249评论 1 2