首页 > 数据库 >数据库提权

数据库提权

时间:2024-05-26 21:58:51浏览次数:22  
标签:文件 lib plugin 数据库 提权 udf mysql 目录

1、通过将sql语句导出文件的方式(备份)

mysql5.5以上默认,secure_file_priv为null,secure_file_priv=null 表示所有文件路径均不允许导出。

'空'可任意导出,值应该设置为什么都没有(删除)才能消除mysql自身的写拦截。

/tmp指定路径导出

对web目录是否有写权限

mysql root

linux root

中间件 www-data

假设联合查询

select 1,2,'' into outfile "web根目录绝对路径";

非联合查询(报错、盲注)

select * from users where id=1 into outfile 'C:\cnmdb2.php' lines terminated by 'php代码(也可写 16进制)';

2、普通日志导出

原理:更改默认日志路径导出webshell

3、慢查询写shell

为什么要用慢查询写呢?上边说过开启日志监测后文件会很大,网站访问量大的话我们写的shell会出错

udf提权

udf(user defined function),用户自定函数,win/lin环境下均可使用,使用动态链接库.dll或.so,放置对应 文件到mysql安装目录中\lib\plugin目录下 一般来说lib目录和plugin目录需要用户自建(高版本无lib\plugin目录),也可使用NTFS流创建,在数据 库中加载动态连接库中的sys_eval或sys_exec函数即可执行操作系统命令。 通过自定义mysql函数,对mysql的功能进行扩充,添加的函数可以像mysql的内置函数一样被调用执 行,mysql的用户自定义函数存放mysql根目下的/mysql/lib/plugin里面,这里面存储着mysql的动态 链接库文件。我们将自定义的库文件放进去后,还要在mysql中执行create FUNVTION function_name RETURNS STRING SONAME 'udf.dll' 命令将该库文件中的函数导入,才能使用该函数,就像python里面 的导入模块、方法一样。

1.1 条件

①动态连接库文件

这个udf.dll 不需要我们自己编写,可以利用sqlmap\msf等工具为我们提供的。

②shell

进行udf提权的前提是我们已经获得了一个网站的webshell或数据库的权限

③高权限dbms账户

获得webshell后,我们需要在网站的一些敏感文件里面寻找数据库文件的用户名密码,如像config.php connect.php这类文件。

④对数据库插件目录的写权限

1.2 动态链接库文件获取

我们从两个地方获取动态链接库文件

sqlmap

/usr/share/sqlmap/data/udf/mysql/linux/64/

sqlmap中的四个动态链接库文件是加过密的,需要在/sqlmap/extra/cloak目录下执行下面命令才能生 效。

python .\cloak.py -d -i ../../data/udf/mysql/linux/64/lib_mysqludf_sys.so_ -o linux_udf_64.so metesploit

/usr/share/metasploit-framework/data/exploits/mysql

1.3 查看插件目录位置

我的试验环境kali的目录为/usr/lib/x86_64-linux-gun/mariadb19/plugin

也可以通过在sqlshell中执行

select @@plugin_dir

插件目录默认是不存在的,需要我们手动创建,但是sql用户往往并不具备创建文件夹的权限,故在 windows系统下,可以通过ads备份文档流的方式绕过。linux系统就狗带

select @@basedir; //查找到mysql的目录

select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib::$INDEX_ALLOCATION'; //利用NTFS ADS创建lib目录

select 'It is dll' into dumpfile 'C:\Program Files\MySQL\MySQL Server 5.1\lib\plugin::$INDEX_ALLOCATION';

//利用NTFS ADS创建plugin目录

1.4 动态连接库文件导入

我只是在本机上验证这种方法是否有效,所以没有模拟真实网络环境,真实环境是需要通过sqlshell创建 文件,将我们的so文件内容写道文件中去的。这里我们直接将动态链接库文件复制到插件目录

1.5 将函数导入mysql

create function sys_eval returns string soname '插件文件名称'

查看命令执行效果

可以看到成功执行了系统命令

1、在windows环境下当mysql版本>5.2时,udf的导出路径为,%MySQL%\Lib\Plugin\,且默认无此目 录,可尝试适用ntfs创建目录。

select ‘xxx’into outfile "mysql目录\lib::$INDEX_ALLOCATION";//使用ntfs创建目录

select ‘xxx’into outfile "mysql目录\lib\plugin::$INDEX_ALLOCATION"

然后以导出日志形式将dll文件导出至\lib\plugin目录

select * from users where id=1 into outfile 'C:\mysql\lib\plugin\test.dll' lines terminated by 'shellcode[udf]';

2、在数据库权限比中间件权限高的情况下使用udf提权。最终权限为数据库权限。

标签:文件,lib,plugin,数据库,提权,udf,mysql,目录
From: https://blog.csdn.net/A526847/article/details/139221428

相关文章

  • 山东大学软件学院数据库实验1-9(全部)
    目录前言实验代码实验一1-11-2 1-3 1-4 1-5 1-6 实验二2-1 2-22-3 2-42-5 2-62-72-82-92-10实验三 3-13-23-33-43-53-63-73-83-93-10实验四 4-14-24-34-44-54-64-74-84-94-10实验五 5-15-25-35-45-55-65-75-8......
  • mysql数据库监控跟踪方案
    方案一canal+kafka  QuickStart·alibaba/canalWiki(github.com)1.自定义处理程序,完全自定义开发,适配各种需求2.只支持增删改操作监控方案二通过软件NeorProfileSQLhttp://www.profilesql.com/files/download/sqlprofiler-4.1.1.exe1.可以监控所有执行的sql语......
  • 在Ubuntu中部署MongoDB数据库
    提示:为了方便,接下来的操作都在shell中进行(需提前建立ssh连接),当然也可以在虚拟机中进行。1.导入MongoDB的公钥首先导入MongoDB的公钥,以便后续下载和安装MongoDB输入如下代码wget-qO-https://www.mongodb.org/static/pgp/server-6.0.asc|sudoapt-keyadd-2.创建M......
  • 基于ssm+jsp家政服务网站系统,家政管理系统,附源码+数据库+论文+PPT,包安装调试
    1、项目介绍随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。家政服务网站,主要的模块包括查看管理员;个人中心、用户管理、服务类型管理、家政类型管理、家政评价管理、家政资讯管理、家政服务管理、家政预约管理......
  • Python面试宝典:Python中与数据库连接和操作相关的面试笔试题(1000加面试笔试题助你轻松
    Python面试宝典:1000加python面试题助你轻松捕获大厂Offer【第二部分:Python高级特性:第十五章:数据库编程:第一节:数据库连接和操作】第十五章:数据库编程第一节:数据库连接和操作数据库API规范:DB-API使用SQLite数据库使用MySQL数据库使用ORM工具注意事项python中和......
  • 创新实训2024.05.26日志:落地基于硬盘的数据库服务
    1.需求任务列表以下描述易学大模型软件的web应用的功能。用户注册用户邮箱,密码,验证码开启官方邮箱,用来发验证码(QQ网易都支持开启smtp协议,找教程,用邮箱不用手机号是为了省买发短信云服务的钱)验证码缓存于redis,5min内有效验证密码长度,验证码是否正确新用户信息保存于mysq......
  • 【MySQL数据库】认识数据库+环境搭建--------Windows系统
    一、认识数据库数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。二、MySQL数据库MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大......
  • JDBC & 数据库连接池:详述Java 数据库操作的基础,数据库连接池的使用以及原理,比较常用数
    JDBC基础 JDBC的定义和目的 JDBC(JavaDatabaseConnectivity)是一个用于执行SQL语句的JavaAPI,可以与多种关系数据库进行交互,这的API由一组用Java语言编写的类和接口组成。 JDBC鼓励供应商使用JDBC驱动程序,该驱动程序可以通过数据库管理系统的客户机接口与各个数......
  • Java项目:基于SSM框架实现的社区服务管理系统分前后台(ssm+B/S架构+源码+数据库+毕业论
    一、项目简介本项目是一套基于SSM框架实现的社区服务管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值二、技术......
  • 数据库——查询树形结构某节点的所有子节点、所有父节点
    一、ORACLE查询当前节点与所有子节点:SELECT*FROMYW_XYZBCONNECTBYPRIORID=PARENT_IDSTARTWITHID='***'查询当前节点与所有父节点:SELECT*FROMYW_XYZBCONNECTBYPRIORPARENT_ID=IDSTARTWITHID='***'二、PgSQL查询当前节点与所有子节点:WITHRECU......