数据库提权
本文主要记录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 job
、manage scheduler
等权限,或通过注入获取此类权限。
2. 利用 Java 存储过程提权
原理
创建 Java 源程序(如ShellUtil
)并赋予java.io.FilePermission
等系统权限,通过调用 Java 方法执行命令,突破数据库权限限制。
利用条件
需有create java source
、grant 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 FUNCTION
、lo_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的攻击手法 - 知冰 - 博客园