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

数据库提权

本文主要记录mdut工具用到的方法

目录

一、Mysql

1.UDF 提权

原理

利用条件

绕过方法

二、Mssql

1.CLR

原理

利用条件

2.代理作业(Agent Job)

原理

利用条件

3.XP_Cmdshell 提权

原理

利用条件

 4.Ole Automation Procedures 提权

原理

利用条件

三、Oracle

1. 利用DBMS_schedurler提权

原理

利用条件

2. 利用 Java 存储过程提权

原理

利用条件

四、postgresql

1. system函数提权(适用于 PostgreSQL <=8.2)

原理

利用条件

2. UDF(用户自定义函数)提权

原理

利用条件

3. 利用 CVE-2019-9193 提权(适用于 PostgreSQL ≥9.3)

原理

利用条件

五、Redis

1.redis未授权

2.主从复制RCE

原理

利用条件

3.计划任务反弹shell

原理

4.SSH公钥替换

原理

利用条件


一、Mysql

(如果已知web目录的路径且具有系统超级管理员权限可写入webshell)

1.UDF 提权

原理

通过在 MySQL 中创建含系统命令执行功能的自定义函数(UDF),调用系统级命令实现权限提升

利用条件

1.拥有 MySQL的FILE权限(可读写文件)。

2.能将 UDF 动态链接库(如.d11/.so)写入数据库插件目司数据库版本与 UDF 库版本匹配。

3.数据库版本与 UDF 库版本匹配。

绕过方法

新建ntfsdir目录(win)

二、Mssql

1.CLR

原理

通过启用 CLR 集成,创建包含系统命令执行逻辑的托管代码程序集,利用高权限数据库账户(如 sysadmin)执行程序集实现提权。

利用条件

1.需 sysadmin 权限;

2.数据库开启clr enabled配置;

3.数据库TRUSTWORTHY属性设为ON

2.代理作业(Agent Job)

原理

利用 SQL Server 代理服务(通常以高权限运行)创建作业执行系统命令,借助代理服务权限实现提权。

利用条件

1.需启用 SQL Server Agent服务;

2.账户有创建和执行代理作业的权限(如SQLAgentOperatorRole)。

3.XP_Cmdshell 提权

原理

激活xp_cmdshell存储过程,通过其直接执行系统命令,若数据库服务账户权限高(如 Local System),可实现提权。

利用条件

1.需 sysadmin 权限启用xp_cmdshell

2.数据库服务账户具备高系统权限。

 4.Ole Automation Procedures 提权

原理

启用 OLE 自动化组件(sp_OACreate等),调用系统 COM 对象执行命令,借助 COM 组件运行权限提权。

利用条件

1.需 sysadmin 权限启用Ole Automation Procedures

2.目标系统存在可利用的高权限 COM 组件。

三、Oracle

若当前用户为 DBA,可直接通过DBMS_SCHEDULER或 Java 存储过程执行高权限操作

1. 利用DBMS_schedurler提权

原理

通过创建和执行DBMS_SCHEDULER作业(JOB),以 Oracle 服务进程权限执行系统命令,若服务进程权限较高(如 root),可实现提权。

利用条件

1.需有create jobmanage scheduler等权限,或通过注入获取此类权限。

2. 利用 Java 存储过程提权

原理

创建 Java 源程序(如ShellUtil)并赋予java.io.FilePermission等系统权限,通过调用 Java 方法执行命令,突破数据库权限限制。

利用条件

需有create java sourcegrant java permission权限,或通过注入执行授权语句。

四、postgresql

1. system函数提权(适用于 PostgreSQL <=8.2)

原理

通过创建调用系统libc库中system函数的自定义函数,直接执行系统命令,以数据库进程权限运行。

利用条件

数据库版本≤8.2,需有创建函数权限(如CREATE FUNCTION),且能访问libc库文件。

2. UDF(用户自定义函数)提权

原理

通过pg_largeobject写入预编译的 UDF(用户自定义函数)二进制文件,创建sys_eval等函数执行系统命令,突破数据库权限限制。

利用条件

数据库版本 8.2~9.3,需有CREATE FUNCTIONlo_create等权限,且目标系统存在对应架构的 UDF 文件。

3. 利用 CVE-2019-9193 提权(适用于 PostgreSQL ≥9.3)

原理

利用COPY FROM PROGRAM命令执行系统命令,该命令在特定版本中可被低权限用户滥用,直接调用系统命令。

利用条件

数据库版本≥9.3,用户需有COPY命令权限(如CREATE TABLE配合COPY)。

五、Redis

1.redis未授权

fofa:

port="6379" && protocol="redis"

(如果已知web目录的路径且具有系统超级管理员权限可写入webshell)

2.主从复制RCE

原理

利用 Redis 主从复制机制,攻击者将目标 Redis 设为从节点,指向自己控制的主节点。通过主节点发送包含恶意模块的 RDB 文件(exp文件),目标 Redis 在同步时加载该文件,触发任意命令执行

利用条件

1.Redis未授权访问

2.开启ssh服务,并且可以连接
3.运行Redis的用户为root用户

3.计划任务反弹shell

原理

通过修改Redis配置,将反弹Shell的定时任务命令写入Linux系统的root用户计划任务文件,等待cron服务定期执行以获取交互Shell。

利用条件

1.Redis未授权访问

2.仅限centos

3.redis以root权限运行

4.持久化功能开启

5.redis版本限制(Redis 6.0 及以上版本中,默认启用protected-mode,需通过--protected-mode no关闭才能远程访问)

4.SSH公钥替换

原理

通过将本地新生成的SSH公钥添加到服务器目标用户的`~/.ssh/authorized_keys`文件中,替代原公钥,实现用新密钥对验证身份以获取服务器访问权限。

利用条件

1.开启ssh服务,并且可以连接
2.运行Redis的用户为root用户

参考:Redis的攻击手法 - 知冰 - 博客园

http://www.lryc.cn/news/610446.html

相关文章:

  • 并发编程常用工具类(下):CyclicBarrier 与 Phaser 的协同应用
  • (论文速读)RMT:Retentive+ViT的视觉新骨干
  • Hadoop HDFS 3.3.4 讲解~
  • 嵌入式知识篇---闪存
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • Deepoc 赋能送餐机器人:从机械执行到具身智能的革命性跨越
  • JavaScript 中的流程控制语句详解
  • 机器学习实战:逻辑回归深度解析与欺诈检测评估指标详解(二)
  • Redis缓存详解及常见问题解决方案
  • MySQL 基本操作入门指南
  • MCP进阶:工业协议与AI智能体的融合革命
  • 使用 SecureCRT 连接华为 eNSP 模拟器的方法
  • typeof和instanceof区别
  • Linux学习记录(八)文件共享
  • 认识pytorch与pytorch lightning
  • BackgroundTasks 如何巧妙驾驭多任务并发?
  • 我的创作纪念日____在 CSDN一年来的成长历程和收获
  • openvela之内存管理
  • Linux 磁盘管理与分区配置
  • VUE+SPRINGBOOT从0-1打造前后端-前后台系统-注册实现
  • 向量魔法:Embedding如何赋能大模型理解世界
  • Go语言select
  • Git基础玩法简单描述
  • 【LeetCode刷题集】--排序(一)
  • ICCV2025 Tracking相关paper汇总和解读(19篇)
  • ubuntu 20.04 C和C++的标准头文件都放在哪个目录?
  • windows双系统下ubuntu20.04安装教程
  • HTTPS有哪些优点
  • Jeston + TensorRT + Realsense D435i + ROS noetic + Yolo11 各版本模型目标检测
  • Flink CDC 介绍