一次艰难的提权 MYSQL中的UDF 的研究

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

 除夕晚上,看了会春晚,无聊就上了上t00ls,看到binker求助提权

心想闲呢,就去玩玩了。
问binker要来SHELL地址

看了下环境,windows2003+iis6,不支持.net,支持asp
Asp权限比php权限稍大。
Wscript.shell存在,但是却不能执行命令,bincker说是没有删除wscript.shell,但是禁止了使用wscript.shell的权限。汗,想要通过溢出来搞也只好放弃了。
但是有PHP第一件事自然是找MYSQL ROOT密码了哈。
很幸运,一下就翻到密码root !@#178s*****
原以为很顺利,但现实是残酷的。

不能load_file任何地方的文件 ,说明mysql降权了,继续看了看,存在servu,但是密码也改了,但是即使破解出密码估计也是降权的,于是直接放弃这一条了。
到这里陷入了僵局,于是给binker说春节放假完了他还没搞下来我就帮他再搞下。
春节假放完,问binker说MYSQL降权基本没搞了。但是我想就再试试吧,说不定还能搞呢。
于是继续,我在目录里面跳来跳去,看到个phpinfo.php,就随便看了看,这下看出问题了

看到没,PHP的目录在D:\WEST263_PHP_PACKAGE
试验了一下,ASP马可以跳过去,PHP则不能。
进去一看,有很多敏感的东西

Setup.ini里有MYSQL的ROOT密码
Site.xml存有虚拟主机的所有FTP用户名和密码(真是危险

至此我们已经可以控制服务器上所有的网站了,但这并不是我要的结果,我们的目的还是要服务器权限的哈。
记得ninty的MYSQL中的UDF - Can't open shared library 的研究不。

新建plugin目录

上传一个修改过的UDF.dll,创建函数,成功执行命令,
但是前面说过了,MYSQL不是以系统权限启动的,

是不是这个时候就要放弃了,当然不了,搞了这么久了。
我们至少可以执行系统命令了哈,想到什么了,呵呵。
溢出,这段时间出了那么多洞子,拿来试试吧,发现服务器装了360,就丢了个360提权程序上去,结果发现系统的CMD被禁用了,把程序稍微改了下

再传一个cmd.exe改名为1234567.exe到c:\windows\temp下
成功执行溢出程序

登录3389

至此,提权完毕。
最后,再次感谢360XXXX

 

MYSQL中的UDF 的研究

mysql中支持UDF扩展 ,使得我们可以调用DLL里面的函数来实现一些特殊的功能。
但是对于UDF的具体限制,MYSQL的各个版本各有不同。 下面记录一下:

听说(只是听说,没做测试),在MYSQL 4.1以前的版本中,可以将所有的DLL文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。
无论这个DLL在什么位置,函数的声明是什么样的。

在MYSQL 4.1及以后的版本中,对UDF函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,
这样就防止了通过MYSQL非法调用系统的DLL。

在MYSQL5以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的DLL不能包含/或者\,简单的理解就是不能是绝对路径。
所以我们将DLL释放到system32目录,来跳过这个限制。。或者放到盘符的根目录下通过c:udf.dll这种形式的写法来跳过限制。

经过28ice大牛的提醒,发现原来只要把dll放到PATH这个环境变量所表示的任何一个目录下面,效果跟放到system32目录下面一样。
也可以使用。

再说MYSQL5.1,这里有个问题相信大家会经常遇到的。。
大家有的时候在创建函数的时候,常常会遇到

这个错误。可是我们的语句没有写错,DLL也是免杀的或者服务器上根本没装杀软。。
好多人这里就不明白了。。

这是因为MYSQL 5.1及以后的版本中,又多了一个限制。
创建函数时所用的DLL只能放在mysql的plugin目录里面。。
而且这个plugin目录默认是不存在的。。挺YD吧,,可能就是为了防止通过into dumpfile将DLL来写到这个文件夹。。
MYSQL是无法创建目录的哦, 如果into dumpfile的目标目录不存在是会报错的。

需要手动创建 ,但是它却是一个系统变量。
我在虚拟机上装了MYSQL 5.1.3进行了测试,安装目录是:

通过:

view source 
print?
1 show variables like '%plugin%';


可以看到:
+---------------+------------------------------------------------------------------------
| Variable_name | Value
+---------------+-------------------------------------------------------------------------
| plugin_dir    | C:\Program Files\MySQL\MySQL Server 5.1\lib/plugin
+---------------+-------------------------------------------------------------------------

plugin目录位置是mysql安装目录下的lib/plugin ,需要我们手动创建 。
然后将udf.dll传到这个位置,再创建函数 ,这时就会成功了。

但是这个变量的值是只读的,尝试用

view source 
print?
1 set @@plugin_dir = 'd:\\';


去更改它的值会发生错误。

只能通过修改php.ini ,在里面添加一个

才可以修改这个值 。。
无奈。。
所以在导出UDF提权之前 ,先确定一下MYSQL的版本是有必要的。

如果是5.1以后的,那就不行了,如果是5.1以前的版本创建函数的时候还报Can't open shared library这个错误。
那就要看看DLL是不是真的被导出了,还是被杀软隔离或者干掉了。
















本文转hackfreer51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/571093,如需转载请自行联系原作者

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
关系型数据库 MySQL 索引
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(3)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(3)
103 0
|
关系型数据库 MySQL 索引
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(4)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(4)
|
关系型数据库 MySQL
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(5)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(5)
102 0
|
分布式计算 算法 关系型数据库
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(6)
111 0
|
搜索推荐 Java 数据建模
基于 SpringBoot+Vue+MySql 的家乡特色菜系统研究与实现(一)
基于 SpringBoot+Vue+MySql 的家乡特色菜系统研究与实现
|
5月前
|
存储 关系型数据库 MySQL
深入研究MySQL意向锁
MySQL意向锁是一种特殊的表级锁,由InnoDB存储引擎在操作数据之前自动添加,无需用户干预。它分为意向共享锁(IS)和意向排他锁(IX)两种。意向锁的主要作用是协调行锁和表锁的关系,优化加锁策略,避免全表扫描判断是否存在行锁。意向锁之间不会冲突,但会与表级别的排他锁冲突,从而确保数据库并发访问的一致性和完整性。简而言之,意向锁提高了数据库并发操作的性能和效率。
22052 5
|
6月前
|
关系型数据库 MySQL Shell
mysql数据库提权
UDF提权是攻击者利用MySQL的自定义函数(如sys_eval, sys_exec)创建dll文件,获取系统shell权限。需有MySQL的插入和删除权限及写入dll的权限。不同版本MySQL的dll存放位置不同,通常在lib/plugin目录。信息收集包括检查secure_file_priv、操作系统、版本、路径等。获取udf文件可通过sqlmap(需解码)或msf,然后上传到相应目录。注意利用NTFS数据流创建目录。
140 1
|
6月前
|
SQL 缓存 关系型数据库
认真研究MySQL的主从复制
认真研究MySQL的主从复制
79 0
|
存储 关系型数据库 MySQL
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(1)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(1)
113 0
|
存储 关系型数据库 MySQL
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(2)
带你读《2022技术人的百宝黑皮书》——mysql锁机制的再研究(2)